【问题标题】:JQuery Ajax request failing only in mobile browserJQuery Ajax 请求仅在移动浏览器中失败
【发布时间】:2013-05-23 23:21:02
【问题描述】:

人们问这个问题的帖子很多。但似乎大多数人在使用 ajax 请求进行跨域连接时遇到问题。我只是在同一个域上使用它,但仍然无法设法让 ajax 请求在我的移动浏览器上运行......不过它在桌面浏览器上运行良好。

这是我正在使用的代码:

Ajax 调用

$.ajax({
    type: 'POST',
    url: '/test/Stores/storeCheck',
    data: $input,
    dataType: 'json',
    contentType: "application/x-www-form-urlencoded;charset=utf-8",
    success: function (data) {
      alert("success");
    },
    error:function (xhr) {
      alert("failed");
    }
});

PHP 控制器 (cakephp)

function storeCheck () {

    if ($this->request->is('ajax')) {

        //Selecting values from the DB and returning them in $result

        $this->autoRender = false;
        return (json_encode($result));

    }

}

在我的移动浏览器中,发出了 ajax 请求,它一直持续到出现错误事件,显示失败的警报弹出窗口。我已经尝试按照一些建议使用 JSONP,但没有成功。任何想法将不胜感激。

兄弟, 一个

【问题讨论】:

  • 你能把失败的警报稍微改一下来调试吗? error: function (jqXHR, textStatus, errorThrown) {console.log(jqXHR);console.log(textStatus);console.log(errorThrown)}; 并用回复更新问题?
  • 不知道它是否会帮助您解决问题,但过去我在 ajax 请求期间遇到过调试问题。
  • Nunser/Joshua,我在移动浏览器中调试时收到“解析错误,无法解析 JSON 字符串”。那有意义吗?难道我做错了什么?感谢您的帮助。
  • 是的,该错误意味着您获得的响应不是 json 格式...试试这个,将 return (json_encode($result)); 更改为 echo json_encode($result); 并发布您收到的错误(如果有)请先注释我的调试代码。
  • 改成 echo json_encode($result); 时出现的错误是“意外的令牌...)我相信无法识别“

标签: php ajax jquery cakephp


【解决方案1】:

我设法解决了这个问题。我在控制器功能中使用了 echo 而不是 return 。我还在控制器中为我的 ajax 请求打开了调试:

function storeCheck () {

if ($this->request->is('ajax')) {

    Configure::write('debug', 0);

    //Selecting values from the DB and returning them in $result

    $this->autoRender = false;
    echo json_encode($result);

}

}

【讨论】:

  • 很高兴看到它正常工作,但请尝试调试“意外令牌 echo json_encode($result);return;,它会给出同样的错误吗?如果它确实给出了相同的错误,那么结果可能在某处有一个< 字符。它不是布局问题,$this->autoRender = false 阻止了这种情况(不附加布局 视图,因此回显应该没有额外的标记)。 debug > 0 是为了帮助你解决问题,如果你绕过它,警告只是没有显示,但它可能仍然是一个问题,尝试解决它是一个好习惯:)
  • 你肯定有一点。我会看看它,让你知道它是怎么回事。
  • 当我调试并仔细查看在 ajax 请求中返回的对象时(就在无法解析 JSON 字符串之前),我看到其中的 responseText 以 JSON 格式显示从数据库返回的数据。但是,它也是在末尾附加的一些数据,如下所示:"[{"stores":{"name":"test","address":"test 43, Stockholm, Sweden"}}]

    查看文件 &quo...” 我敢打赌“

    ...”是它不喜欢的部分?

  • 是的,它不喜欢这样,而且即使您没有复制所有错误,也可能是“未找到视图错误”。如果您自己无法解决,可能会发布一个带有该错误的不同问题,因为这些 cmets 偏离了原始问题 :)
  • 但是当 autorender 设置为 false 时它不应该寻找视图。我说的对吗?
猜你喜欢
  • 2012-07-23
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多