目前的情況是這樣的,後端採用PHP的YII架構,通過view方式將資料返回給前端。
其中有一個form表單,通過綁定onclick事件,把php擷取過來的資料請求到另外一個後端,即如下的sendAction.php。
問題:通過jQuery的serializeArray()方法賦值後,產生了一個對象,請問如何往這個對象賦值呢(比如如下代碼,通過php擷取的$results,往postdata這個對象裡賦值,以便sendAction.php能夠接受到這個value)?下面這段代碼顯示key對應的results傳過去了,但是對應的results的value沒有傳過來,在後端列印的話,顯示為[object object]
function doAction(id){ var url = 'sendAction.php'; var postdata = $("#form").serializeArray(); postdata[postdata.length]={name:'id',value:id}; var results = $results))?>; postdata[postdata.length]={name:'results',value:results}; $.ajax({ type: "POST", url: url, data:postdata, //dataType:"json", success:function(){ alert("發送成功"); }; }); }
回複內容:
目前的情況是這樣的,後端採用PHP的YII架構,通過view方式將資料返回給前端。
其中有一個form表單,通過綁定onclick事件,把php擷取過來的資料請求到另外一個後端,即如下的sendAction.php。
問題:通過jQuery的serializeArray()方法賦值後,產生了一個對象,請問如何往這個對象賦值呢(比如如下代碼,通過php擷取的$results,往postdata這個對象裡賦值,以便sendAction.php能夠接受到這個value)?下面這段代碼顯示key對應的results傳過去了,但是對應的results的value沒有傳過來,在後端列印的話,顯示為[object object]
function doAction(id){ var url = 'sendAction.php'; var postdata = $("#form").serializeArray(); postdata[postdata.length]={name:'id',value:id}; var results = $results))?>; postdata[postdata.length]={name:'results',value:results}; $.ajax({ type: "POST", url: url, data:postdata, //dataType:"json", success:function(){ alert("發送成功"); }; }); }
var results = $results))?>;
相當於 var results = {results: theJsonObject}; 對吧?
而http協議傳輸資料的時候是不可能把數組傳遞給php的,而是特定格式的字串,也許是json字串,也許是xml,也許是常見的 key1=value1&key2=value2 方式,沒問題吧?
所以,ajax提交的時候必然會把postdata轉換為字串,而此時postdata是一個嵌套數組的時候,也許會發生問題,所以導致了你遇到的問題。
建議把上面那行修改成
var results = '$results))?>';
這樣就相當於var results = '{results: theJsonObjct}',是一個普通的字串了,php端得到之後再json_decode一下就可以恢複,你覺得呢?