JSON数据未发送

时间:2013-12-14 08:09:45

标签: ajax post

我有以下'stringified'JSON数据:

$jsonData = '[{"tnum":"1","tnam":"Title1","snum":"24","word1":"this","word2":"is fun"},{"tnum":"343","tnam":"Title2","snum":"233","word1":"hello","word2:"again"}]'

我的AJAX是:

$.ajax({
    url: "doSave3.php",
    type: "POST",
    data: jsonData,
    contentType: 'application/json; charset=UTF-8',
    success: function() {
        alert("Data saved");
    },
    error: function() {
        alert("Data were not saved");
    }
});

服务器端的PHP是:

if(isset($_POST['data'])){
    $jsonData = $_POST['data'];

    $result = json_decode($jsonData);

    foreach ($result as $key => $value) {
        if ($value) {
            $sql = "INSERT INTO saved_lists (id, title_number, title_name, sub_number, word1, word2) VALUES (NULL, $value->tnum, '$value->tnam', $value->snum, '$value->word1', '$value->word2')";
            mysql_query($sql);
        }
    }
}

我测试了PHP,当我在doSave3.php中设置手动设置$ jsonData时,它可以工作。请注意,在进行此测试时,我还必须删除if(isset($ _ POST ['data']或它不会超过if语句。当我恢复依赖$ _POST ['data']时,没有动作所以我很确定doSave3.php没有收到POST数据。

一些帮助将不胜感激。我已经浏览了所有相似的帖子,并纠正了一些事情,但还没有骰子。

1 个答案:

答案 0 :(得分:0)

啊......问题在于你的json字符串。你错过了字符串"word2:"again"末尾的双引号,这应该是"word":"again"

var jsonData = '[{"tnum":"1","tnam":"Title1","snum":"24","word1":"this","word2":"is fun"},{"tnum":"343","tnam":"Title2","snum":"233","word1":"hello","word2":"again"}]';
$.ajax({
    url: "echo.php",
    type: "POST",
    data: 'data='+jsonData,
    success: function(data) {
    alert(data);
    },
    error: function() {
    alert("Data were not saved");
    }
});
});

和echo.php

$json = urldecode($_POST['data']);
var_dump(json_decode($json));

双引号一切正常。:)