由于传递不正确的数据对象可能导致Ajax错误

时间:2015-01-12 23:09:55

标签: javascript php ajax json

您好我是ajax的新手,我正在尝试将Json传递给数据库,但我还没有那么远。目前,我正在尝试验证我传递的数据是否已成功完成。但是,我总是陷入ajax错误的方法。我将上传我的代码以及数据的外观和错误。

感谢您的帮助!

<script>
function updateTable()
{
    alert("Do i try to update table?");
    document.getElementById("testLand").innerHTML = "Post Json";
    //echo new table values for ID = x
}
function popupClick (){
    var popupObj = {};
    popupObj["Verified_By"] = $('#popupVBy').val();
    popupObj["Date_Verified"] = $('#popupDV').val();
    popupObj["Comments"] = $('#popupC').val();
    popupObj["Notes"] = $('#popupN').val();
    var popupString = JSON.stringify(popupObj);
    alert(popupString);
    $.ajax({
        type: "POST",
        dataType: "json",
        url: "popupAjax.php",
        data: popupObj,
        cache: false,
        success: function(data) 
        {
            alert("Success");
            updateTable();
        },
        error: function(data)
        {
            alert("there was an error in the ajax");
            alert(JSON.stringify(data));

        }
    });
}
</script>

正在传递的JSON显示在var popupString:

JSON Being Passed shown in popupString

错误:

enter image description here

popupAjax.php文件(警告它的暴躁)

<?php
echo "Testing tests are testy";
?>

1 个答案:

答案 0 :(得分:1)

您将dataType指定为json。但这是返回的数据类型,而不是您要发送的数据类型。

您正在返回html / text,因此您只需删除dataType行:

即可
    type: "POST",
    url: "popupAjax.php",

如果您确实想要返回json,则需要在服务器端构建数据结构并在结束时发送它。在你的测试用例中,它只是:

echo json_encode("Testing tests are testy");

但您也可以发送嵌套对象或数组。

作为补充说明,您可以在表单上使用.serialize()(如果使用表单...),以便jQuery自动构建可以在ajax方法中发送的对象。然后您不必手动执行此操作。