jQuery:JSON停止了工作

时间:2011-02-20 11:48:57

标签: jquery ajax json

下面的代码刚刚停止工作,虽然自上次工作以来我甚至都没有触及该部分文件。

$.post(PATH_PRODUCTS_AJAX_URL, att, function(data) {
  if(data.proper)
  {
    current_step = data.step;
    $('#product_container').append('<div class="product_content">' + data.content + '</div>');
    $('#product_container .product_content:last').animate({'left' : '-=460px'}, 200, 'swing');
  }
  else
  {
    alert('Not proper.');
  }
}, 'json');

我的调试过程如下:

我检查了网址和输入数据 - 它们都很好。我使用 data.proper 变量来确保数据正常;如果数据没有以正确的方式处理,我应该得到“不合适”的警告框 - 但现在我没有。我也试过if语句之外的随机警报框,但根本没有任何事情发生。

但是如果删除JSON参数,我会得到“Not proper”框。通过提醒 data 变量,我还可以看到输出数据都很好。

我检查了涉及的文件,它们都是UTF-8编码的。

我真的不知道接下来该做什么。任何帮助表示赞赏。

编辑:(示例数据)

products.php:

$return['proper'] = true;
$return['step'] = 1;
$return['content'] = 'Hello';

$json = json_encode($return);
echo $json;

响应(请注意,只有在排除JSON参数时才会返回):

{"proper":true,"step":1,"content":"Hello"}

1 个答案:

答案 0 :(得分:0)

您可以尝试从简写.post()更改为.ajax()来调用,以便您显示错误:

$.ajax({
    type: "POST",
    url: PATH_PRODUCTS_AJAX_URL,
    data: att,            
    dataType: "json",
    success: function(data) {
        if (data.proper) {
            current_step = data.step;
            $('#product_container').append('<div class="product_content">' + data.content + '</div>');
            $('#product_container .product_content:last').animate({'left': '-=460px'}, 200, 'swing');
        }
        else {
            alert('Not proper.');
        }
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        alert("Response text: "+XMLHttpRequest.responseText);
        alert("Status returned: "+textStatus);
        alert("Error thrown: "+errorThrown);
    }
});