1. 程式人生 > >學習JSON、ajax中的一些問題

學習JSON、ajax中的一些問題

1.普通陣列轉換為JSON陣列格式

例如:

        普通陣列為:$arr = array('name' => 'likui' , 'age' => 30);

        轉換為JSON格式陣列使用: $json = json_encode($arr);

        輸出:{"name":"likui","age":30};

  php 5.4.0之前,json_encode() 是不支援 中文編碼的 5.4.0之後,json_encode()新增了 JSON_UNESCAPED_UNICODE 選項,支援了中文,

  例如:$arr = array('name' => '張三' , 'age' => 30);

      $json = json_encode($arr,JSON_UNESCAPED_UNICODE),輸出獲得漢字的編碼,而不直接是漢字。為了方便記憶,此選項可以簡寫為256

2.在資料庫中儲存的時候,JSON格式的陣列,可以直接寫入到資料庫,到時拿出來的時候進行轉換就可以正常使用。

例如:資料庫中又一條記錄儲存為{"name":"likui","age":30};

    當我們拿出來需要轉換成資料並且使用的時候,就需要使用到json_decode()

    具體使用如下:$jsonStr = {"name":"likui","age":30};

             $arr = json_decode($jsonStr,true);

             其中,為true時,返回array格式。

             false時,返回物件格式:object(stdClass)#16 (2) { ["name"]=> string(8) "the name" ["age"]=>                                  int(30) };

3.ajax方法提交表單

$.ajax({name:value, name:value, ... })

該引數規定了ajax請求的一個或多個名稱/值對。

當我們平時提交表單資料的時候,可以直接使用post和get型別。

例如:jq.post和jq.get


4.在我們使用ajax提交,並且返回json資料,判斷表單是否提交成功。

在我們使用的thinkphp框架中,$this->success()會自動判斷我們是否使用ajax進行提交,success中引數有:資訊、跳轉地址、是否是ajax。例如$this->success('成功',U('index'),true)。當為true時,返回ajax資訊,交由前臺判斷處理,資訊如下:

{"info":"\u6210\u529f","status":1,"url":""}

當為false時,status為0

前臺通過ajax的回撥,獲得status引數,可以聯合layui來返回給使用者成功或錯誤資訊。

jq.post('{:U("jinji")}',id,function (json) {
                    layer.close(loadIndex);
                    if (json.status == 1) {
                        layer.msg(json.info, {icon: 1, time: 1000}, function () {
                            location.reload();//do something
                        });
                    } else {
                        layer.msg(json.info, {icon: 2, anim: 6, time: 1000});
                    }
                    console.log('提交成功');
                },'json');