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

时间:2014-03-20 14:50:44

标签: javascript jquery ajax json

我有一个JSON对象,我已经"字符串化"在JavaScript中,我想发布到服务器。

我用简单的PHP脚本测试它,只打印$_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"}}}}}

后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); ?>

1 个答案:

答案 0 :(得分:3)

使用contentType指定发送给服务器的数据类型。你将它设置为json,但你没有使用JSON表示法发送javascript对象,所以服务器拒绝请求(我不确定每个服务器如何处理它)。对dataType也可以这么说,而你的服务器没有返回JSON。