【问题标题】:Why is this ajax post giving me an error? Does an ajax post require "true" or "false" to be returned?为什么这个 ajax 帖子给我一个错误? ajax 帖子是否需要返回“true”或“false”?
【发布时间】:2011-11-29 11:37:47
【问题描述】:
$.ajax({
    url:"http://www.xxxxxxxxxxxxxx.com/cc/validate",
    type:"POST",
    dataType:"json",
    data: JSON.encode($parts),
    complete: function(){
    },
    success: function(n)
    {
        console.log(n);
        console.log(n.object);
        console.log("ajax complete");
    },
    error: function(){
        console.log("error");

    }
 });
  • 这将获取在 ajax 发布调用上方定义的数组,并将编码的 json 数组发布到 php 文件。问题是确定为什么帖子只会让我返回“真”或“假”。如果我尝试返回任何字符串,我会在 ajax 中得到错误。我希望能够返回在 php 中创建的字符串,而不仅仅是“true”或“false”。

【问题讨论】:

  • 我认为是同源策略 - en.wikipedia.org/wiki/Same_origin_policy
  • 我不确定这是否是问题,因为文件来自同一个站点。如果这是问题所在,您知道解决方法吗?
  • 如果这是来自同一站点的文件,您可能需要尝试 url 中的相对路径,看看是否有帮助
  • 你说的是这个部分吗:success: function(n) { alert(n); } 会提醒你一个 TRUE 或 FALSE?如果是这样,也许您的 PHP 脚本在某个地方留下了一个调试变量转储,它返回 TRUE/FALSE 而不是您所期望的。否则,如果您指出它返回 TRUE/FALSE 的确切位置会很有帮助,因为该脚本中有 3 个地方可以返回它(即完整、成功和错误函数)。
  • 当外部 php 文件中没有回显任何内容或任何不是 TRUE 或 FALSE 的字符串时,ajax 会给出错误。但是,如果我回显“true”或回显“false”,则 ajax 成功。我的问题是我不想被限制为只返回 TRUE 或 FALSE 而不是任何字符串。

标签: php jquery ajax json post


【解决方案1】:

你的代码没问题 只要确保你的 php 文件返回一个 echo json_encode($arrayOFdata)

数据类型:“json”,

表示从php接收的数据将被解析为json对象

这并不意味着你会发送一个 json 对象

【讨论】:

    【解决方案2】:

    您在本地主机上吗?好吧,如果是这样,您可能必须更改您的 mime 标头(应用程序/json)...您的 javascript 需要 json,但您的 php 正在回显 html。

    header('Content-type: application/json');
    

    如果您希望能够返回其他内容,那么您必须在 ajax 调用中删除或更改内容类型。内容类型是为了给 jquery 一个关于服务器期望的提示。如果你告诉它会接收 json 数据,你需要给它 json,否则你会遇到解析错误。

    【讨论】:

    • 谢谢!这就是问题所在。除了这个修复,我还发现由于我没有返回一个 json 数组,我需要在我的 ajax 调用中取出 dataType: "json" 。现在可以了
    猜你喜欢
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 2018-12-13
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    相关资源
    最近更新 更多