php - 为什么 jQuery Ajax JSON 请求总是失败?

标签 php ajax json jquery

我目前有一个代码片段,我想用它来获取 Ajax 调用并从我的 PHP 文件返回 JSON 数据,我可以在 jQuery 端使用它。我的问题是,如果我将数据类型更改为 JSON,我总是会收到请求错误,但是当我在 Firebug 中检查它时,我可以看到 PHP 文件刚刚返回了 JSON 值!

这是 HTML:

<form id="formm" method="post">
    <input type="text" name="test" value="" id="test"/>
    <input type="submit" name="submit" value="Submit"/>
</form>

<div id="result"></div>

这是 JS:

$("#formm").submit(function(event) {

    /* Stop form from submitting normally */
    event.preventDefault();

    /* Clear result div*/
    $("#result").html('');

    /* Get some values from elements on the page: */
    var values = $(this).serialize();

    /* Send the data using post and put the results in a div */
    $.ajax({
        url: "functions.php",
        type: "post",
        dataType: "json",
        data: values,
        success: function(data) {
            alert(data);
        },
        error:function(){
            alert("failure");
            $("#result").html('There is error while submit');
        }
    });
});

PHP 文件:

echo json_encode(array('returned_val' => $_POST['test']));

当我使用 Firebug 检查时,我得到:returned_val“无论我在文本框中键入什么”。谁能告诉我可能是什么问题?

更新:

响应头:

Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language ***
Content-Length  5
Content-Type    application/json; charset=utf-8
Host    localhost
Referer http://localhost/test/
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
X-Requested-With    XMLHttpRequest

当我将错误放入控制台时,我得到了这个:

The following error occured: parsererror SyntaxError: JSON.parse: unexpected character

最佳答案

JSON数据经过严格的解析;任何格式错误的 JSON 都会被拒绝并抛出解析错误。从 jQuery 1.9 开始,空响应也会被拒绝;服务器应返回 null 或 {} 的响应

这是文档 http://api.jquery.com/jQuery.ajax/

因此检查来自 php 的 json 响应(json 数据是否格式正确且非空)

关于php - 为什么 jQuery Ajax JSON 请求总是失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19467450/

相关文章:

php - 如何转换为在 View 中使用 Yii CDataProvider?

javascript - 空字符 ('\0' ) 导致 updatepanel 出现问题

json - NancyFX : How do I deserialize dynamic types via BrowserResponse. Body.DeserializeJson(单元测试)

c - 在 Native Tizen 可穿戴设备中使用 libcurl 从 url 输出 json 响应

php - 从服务器设置图像后如何刷新 ImageView 在我的情况下,它不更新 ImageView

php - 执行 PHP 操作后网站关闭

php - $_POST 冲突?

php - 如何在博客/新闻文章的文本区域中设置文本格式

java - 编译代码出错

php - 如何在没有隐藏元素的情况下发送POST数据?