Javascript JQuery Ajax不向PHP发送数据

Javascript JQuery Ajax不向PHP发送数据,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,下面的myscript.js正在输出: [{"orcamento":"10","atual":"20","desvio":"","data":"2015-01-01","nome_conta":"BBB","nome_categoria":"abc","nome_entidade":"def"}] myscript.js: if (addList.length) { $.ajax($.extend({}, ajaxObj, { data:

下面的myscript.js正在输出:

[{"orcamento":"10","atual":"20","desvio":"","data":"2015-01-01","nome_conta":"BBB","nome_categoria":"abc","nome_entidade":"def"}]
myscript.js:

if (addList.length) {
            $.ajax($.extend({}, ajaxObj, {
                data: { "addList": JSON.stringify(addList) },
                success: function (rows) {
                    $grid.pqGrid("commit", { type: 'add', rows: rows });

                },
                complete: function () {
                    $grid.pqGrid("hideLoading");
                    $grid.pqGrid("rollback", { type: 'add' });
                    $('#consola').text(JSON.stringify(addList));
                }
            }));
        }
上面的JSON数据必须发送到下面的my script.php:

if( isset($_POST["addList"]))            
{
    $addList = json_decode($_POST["addList"], true);
    var_dump ($addList);
    echo "test";
    exit();
}
尽管数据是正确的,并且调用了myscript.php,但它没有返回任何内容。我得到:

NULLtest
我尝试使用GET而不是POST,但结果是一样的,上面的代码有什么问题

编辑: 以下是ajax请求中使用的ajaxObj:

var ajaxObj = {
        dataType: "json",
        url:"../myscript.php",
        type: "POST",
        async: true,
        beforeSend: function (jqXHR, settings) {
            $grid.pqGrid("showLoading");
        }
    };

首先,确保您正在发布一个php文件,使用firebug或类似工具跟踪您的脚本

我看不到您在javascript文件中定义目标PHP文件的部分

常规javascript代码可以如下所示:

jQuery.ajax({
     type : "post",
     dataType : "json",
     url : 'target.php',
     data : {foo:bar },
     success: function(response) {
        // do something with response...
     }
});  
如果您看到您正在将firebug的正确参数发布到正确的php文件中,请尝试使用
$\u REQUEST
如果
$\u POST
不起作用

Firebug将向您显示PHP文件的响应。。因此,请执行
打印($\u请求['addList'])
以查看发生了什么

从PHP文档:

如果json无法解码或编码数据深度超过递归限制,则返回NULL。

因此,很可能是JSON数据中存在一些错误,导致JSON_decode无法正确解析它,我已经运行了该代码段,它确实表明它是有效的JSON,但值得检查发送到服务器的数据的较大样本是否存在不一致性

除此之外,在发送到服务器之前对数据对象调用JSON.stringify还有什么原因吗?我会尝试将对象本身作为AJAX调用的数据参数发送,如下所示:

        $.ajax($.extend({}, ajaxObj, {
             data: { "addList": addList },
            success: function (rows) {
                $grid.pqGrid("commit", { type: 'add', rows: rows });

            },
            complete: function () {
                $grid.pqGrid("hideLoading");
                $grid.pqGrid("rollback", { type: 'add' });
                $('#consola').text(JSON.stringify(addList));
            }
        }));
看看这是否有帮助:

编辑


我应该在我最初的回答中注意到,您不需要对发布的数据调用json_decode,jQuery为您正确地将数据编码为post参数;它应该可以作为关联数组在PHP脚本中访问,请尝试在PHP
var_dump($\u POST['addList'][0]['orcamento'])中替换当前的var_dump语句你应该准备好了。

小调备注:你不向PHP发送数据,而是向服务器发出HTTP请求[可能有PHP应用程序在侦听]。将此添加到你身上。ajax调用:键入:“POST”,可能我只是缺少它,但我在调用$时没有看到URL。ajax@moonwave99:谢谢,我会升级我的行话;)如果您在ajax请求之前
console.log(addList)
,您会得到什么?您好,感谢您的帮助,通过建议的更改,我从PHP获得:“警告:json_decode()希望参数1是字符串,数组以…形式给出”您在编辑我的问题时尝试过我的建议,看看这是否有帮助吗?是的,我刚刚测试过它。它正在返回:致命错误:无法在我的手机上使用字符串偏移量作为数组,因此无法在此处写出示例,但我会在我进入办公室时给出,同时,您可以对当前的js和php进行粘贴,并将链接放在此处吗?欢迎:)以供将来参考,问题的关键是,jQuery自动将json对象编码为post参数,因此您不需要在服务器上修改json,也不需要在服务器上解码为json,这些事情已经为您完成了——不过很高兴解决了