【问题标题】:jquery $.post json dataType responsejquery $.post json dataType 响应
【发布时间】:2016-07-17 07:11:45
【问题描述】:

我正在尝试以 json 格式处理来自 $.post 的响应。

    $("#contactform").submit(function() {
    var a = $(this).attr("action");
    $("#message").slideUp(750, function() {

        $("#message").hide();
        $("#submit").attr("disabled", "disabled");

        $.post(a, 
            {
                name: $("#name").val(),
                email: $("#email").val(),
                comments: $("#comments").val()
            }, function(data) {

                alert(data.status);                 

            }
            ,{ dataType: "json" }
        );
    });
    return false;
});

来自 ajax 的响应很好。即使它取出 ,{ dataType: "json" } 行并且只是 alert('data');一切正常。我做错了什么?

【问题讨论】:

  • 不清楚你的问题是什么。什么不工作?
  • 抱歉。我在控制台中没有收到任何错误,但没有出现警报。
  • 返回的JSON有效吗?请发布 ajax 返回的内容。
  • {"status":"fail","msg":"
    • 输入您的姓名。\/li>
    • 您输入的电子邮件地址无效,再试一次。\/li>
    • 输入您的信息。\/li>"}
  • 我用的是php json_encode,所以应该是有效的

标签: jquery ajax


【解决方案1】:

因为您的警报没有显示并且您没有控制台错误,所以您的成功回调似乎没有被触发。

添加错误回调,然后您可能会发现您的响应状态码不是 200。

另外,dataType 参数应该是一个字符串:

   $.post(a, {
            name: $("#name").val(),
            email: $("#email").val(),
            comments: $("#comments").val()
        }, function(data) {
            alert(data.status);
        }
        , "json")
        .fail(function() {
          alert( "error" );
        });

如果您有错误,请检查Chrome Development Tools 中的网络选项卡以查看确切的响应。

【讨论】:

    【解决方案2】:

    我通常使用$.ajax,其中数据类型指定为{ dataType: "json" }。 现在在$.post 中,您只需将类型声明为字符串"json",这就是响应失败的原因。

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-15
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多