javascript - jQuery的serializeArray对象赋值问题

WBOY
リリース: 2016-06-06 20:10:37
オリジナル
1615 人が閲覧しました

目前的情况是这样的,后端采用PHP的YII框架,通过view方式将数据返回给前端。

其中有一个form表单,通过绑定onclick事件,把php获取过来的数据请求到另外一个后端,即如下的sendAction.php。
问题:通过jQuery的serializeArray()方法赋值后,生成了一个对象,请问如何往这个对象赋值呢(比如如下代码,通过php获取的$results,往postdata这个对象里赋值,以便sendAction.php能够接受到这个value)?下面这段代码显示key对应的results传过去了,但是对应的results的value没有传过来,在后端打印的话,显示为[object object]

<code>function doAction(id){
        var url = 'sendAction.php';
        var postdata =  $("#form").serializeArray();
        postdata[postdata.length]={name:'id',value:id};
        var results = <?php echo json_encode(array('results'=>$results))?>;
        postdata[postdata.length]={name:'results',value:results};
        $.ajax({
            type: "POST",
            url: url,
            data:postdata,
            //dataType:"json",
            success:function(){
              alert("发送成功");
            };
        });
    }</code>
ログイン後にコピー
ログイン後にコピー

回复内容:

目前的情况是这样的,后端采用PHP的YII框架,通过view方式将数据返回给前端。

其中有一个form表单,通过绑定onclick事件,把php获取过来的数据请求到另外一个后端,即如下的sendAction.php。
问题:通过jQuery的serializeArray()方法赋值后,生成了一个对象,请问如何往这个对象赋值呢(比如如下代码,通过php获取的$results,往postdata这个对象里赋值,以便sendAction.php能够接受到这个value)?下面这段代码显示key对应的results传过去了,但是对应的results的value没有传过来,在后端打印的话,显示为[object object]

<code>function doAction(id){
        var url = 'sendAction.php';
        var postdata =  $("#form").serializeArray();
        postdata[postdata.length]={name:'id',value:id};
        var results = <?php echo json_encode(array('results'=>$results))?>;
        postdata[postdata.length]={name:'results',value:results};
        $.ajax({
            type: "POST",
            url: url,
            data:postdata,
            //dataType:"json",
            success:function(){
              alert("发送成功");
            };
        });
    }</code>
ログイン後にコピー
ログイン後にコピー

<code>var results = <?php echo json_encode(array('results'=>$results))?>;</code>
ログイン後にコピー

相当于 var results = {results: theJsonObject}; 对吧?
而http协议传输数据的时候是不可能把数组传递给php的,而是特定格式的字符串,也许是json字符串,也许是xml,也许是常见的 key1=value1&key2=value2 方式,没问题吧?
所以,ajax提交的时候必然会把postdata转换为字符串,而此时postdata是一个嵌套数组的时候,也许会发生问题,所以导致了你遇到的问题。
建议把上面那行修改成

<code>var results = '<?php echo json_encode(array('results'=>$results))?>';</code>
ログイン後にコピー

这样就相当于var results = '{results: theJsonObjct}',是一个普通的字符串了,php端得到之后再json_decode一下就可以恢复,你觉得呢?

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート