首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery Ajax不向PHP发送数据

问JQuery Ajax不向PHP发送数据
EN

Stack Overflow用户
提问于 2014-02-04 15:19:27
回答 2查看 209关注 0票数 0

下面是输出的myscript.js:

代码语言:javascript
复制
[{"orcamento":"10","atual":"20","desvio":"","data":"2015-01-01","nome_conta":"BBB","nome_categoria":"abc","nome_entidade":"def"}]

myscript.js:

代码语言:javascript
复制
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数据必须发送到下面的script.php:

代码语言:javascript
复制
if( isset($_POST["addList"]))            
{
    $addList = json_decode($_POST["addList"], true);
    var_dump ($addList);
    echo "test";
    exit();
}

尽管数据是正确的,而且myscript.php正在被调用,但它没有返回任何内容。我得到:

代码语言:javascript
复制
NULLtest

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

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

代码语言:javascript
复制
var ajaxObj = {
        dataType: "json",
        url:"../myscript.php",
        type: "POST",
        async: true,
        beforeSend: function (jqXHR, settings) {
            $grid.pqGrid("showLoading");
        }
    };
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-04 15:43:03

来自解码上的PHP

NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.

因此,很可能您的JSON数据中存在一些错误,使json_decode无法正确地解析它,我已经通过杰森林特运行了这个片段,它确实说它是有效的JSON,但是值得检查发送给服务器的更大的数据样本中是否有不一致之处。

除此之外,在发送到服务器之前,您是否有任何理由在数据对象上调用JSON.stringify?我将尝试将对象本身作为AJAX调用的数据参数发送,如下所示:

代码语言:javascript
复制
        $.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脚本中访问,尝试替换PHPvar_dump($_POST['addList'][0]['orcamento']);中的当前var_dump语句,您应该可以选择。

票数 1
EN

Stack Overflow用户

发布于 2014-02-04 15:33:46

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

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

普通的javascript代码可以如下所示:

代码语言:javascript
复制
jQuery.ajax({
     type : "post",
     dataType : "json",
     url : 'target.php',
     data : {foo:bar },
     success: function(response) {
        // do something with response...
     }
});  

如果您看到在firebug上向正确的php文件提交了正确的参数,如果$_REQUEST不工作,请尝试使用$_POST。

Firebug将显示PHP文件的响应。所以做一个print_r($_REQUEST['addList'])看看是怎么回事.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21556319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档