使用ajax在服务器端恢复json时出错

时间:2015-08-24 08:52:01

标签: javascript php jquery ajax json

我正在尝试将带有ajax的json发送到php文件,因为我尝试了下面的代码

  1. 使用jquery

    var dummyData = {'bob': 'foo', 'paul': 'dog'};
    var ajaxRequest = $.ajax({
            url: "json_handler.php",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(dummyData ),
            dataType: "json"
        });
        ajaxRequest.done(function (response, textStatus, jqXHR) {
            console.log(response + textStatus + jqXHR);
            alert('sd');
        });
    
        ajaxRequest.fail(function (e) {
            console.log(e);
    
        });
    
  2. 我只是在var_dump($_REQUEST)json_handler.php而且ajax请求一直在失败并且没有在响应文本中得到任何内容

    当我尝试

    $json = file_get_contents('php://input');
    var_dump($json);
    

    我得到了json但是ajax请求仍然失败。

    我也尝试过这个javascript,我的代码在下面

    var httpRequest = new XMLHttpRequest();
    httpRequest.onreadystatechange = stateHandler;
    httpRequest.open("POST", "json_handler.php", true);
    httpRequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
    httpRequest.send( JSON.stringify(dummyData ));
    

    这是我的控制台日志

      

    enter image description here

2 个答案:

答案 0 :(得分:4)

请参阅,因为您的ajax有CREATE PROCEDURE Sp_m_ii_2_kaydet @mtu INT, @mod INT, @moid INT, @uid INT AS INSERT INTO m_ii2_alisfatura (muhtur,mturid,muhodm,modmid,uid) SELECT @mtu,CASE WHEN @mtu = 3 THEN (SELECT Max(id) FROM m_ii1_vsf_personel) WHEN @mtu = 2 THEN (SELECT Max(id) FROM m_ii1_vsf_firma) WHEN @mtu = 4 THEN (SELECT Max(id) FROM m_ii1_vsf_taseron) END,@mod,@moid,@uid ,所以它期待dataType: "json"格式的响应,就像json一样,并且您不是{key:value} or [{k:v}, {k:v}, ....]任何json结构,所以这是你的ajax失败的地方。

对我来说,你必须这样写:

echo

答案 1 :(得分:0)

您的请求似乎很好,但为什么要对JSON进行字符串化?

您可以发布有效负载数据:

data: dummyData

要调试和测试您的json帖子,您可以使用扩展名作为Postman或Advanced Rest Client。