Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过jQuery$.ajax()将JSON字符串发布到服务器?_Javascript_Jquery_Ajax_Json - Fatal编程技术网

Javascript 如何通过jQuery$.ajax()将JSON字符串发布到服务器?

Javascript 如何通过jQuery$.ajax()将JSON字符串发布到服务器?,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我有一个JSON对象,我已经用JavaScript“字符串化”了它,我想把它发布到服务器上 我正在使用简单的PHP脚本来测试这一点,该脚本只打印$\u POST数组。不幸的是它总是空的。我错过了什么 myJsonFile.json {"glossary":{"title":"example glossary","GlossDiv":{"title":"S","GlossList":{"GlossEntry":{"ID":"SGML","SortAs":"SGML","GlossTerm":"St

我有一个JSON对象,我已经用JavaScript“字符串化”了它,我想把它发布到服务器上

我正在使用简单的PHP脚本来测试这一点,该脚本只打印
$\u POST
数组。不幸的是它总是空的。我错过了什么

myJsonFile.json

{"glossary":{"title":"example glossary","GlossDiv":{"title":"S","GlossList":{"GlossEntry":{"ID":"SGML","SortAs":"SGML","GlossTerm":"Standard Generalized Markup Language","Acronym":"SGML","Abbrev":"ISO 8879:1986","GlossDef":{"para":"A meta-markup language, used to create markup languages such as DocBook.","GlossSeeAlso":["GML","XML"]},"GlossSee":"markup"}}}}}
post-json.js

$.get('myJsonFile.json',function(myJsonString) {
    // other stuff happens here, I promise :)
    console.log(myJsonString); // looks like a nicely formed json object to me
    $.ajax({
        type: 'POST',
        url: 'view-json.php',
        data: {json: JSON.stringify(myJsonString)},
        success: function(data) {
            // success message
        },
        dataType: 'json',                // These are the offending lines. Remove.
        contentType: 'application/json'  // Thanks A.Wolff!
    });
},'json');
view-json.php//始终为空数组

<?php print_r($_POST); ?>


使用
contentType
指定发送到服务器的数据类型。您将其设置为json,但并没有使用json符号发送javascript对象,所以服务器拒绝请求(我不确定每个服务器如何处理它)。当服务器没有返回JSON时,
dataType
也是如此。

如何检查
$\u POST
是空的?好问题,我正在使用Google Chrome开发工具,检查网络选项卡,单击POST-JSON.php条目并查看响应。在标题中,我可以看到请求负载显示发送了json对象:
json=%7B%221%22%3A%7B%22id%22%3A1%2C%22…
,但响应总是:
Array()
。另外,我的成功消息显示,嗯,成功了。至少尝试删除
数据类型:'json'
(您在这里不返回json,因此内部解析将抛出错误),并在成功回调内部使用
控制台.log(数据)尝试删除
contentType
tooThanks<代码>数据类型
已删除和
控制台。日志(数据)
已添加。log(数据)也返回
Array()