【问题标题】:Jquery getJSON throws: "Failed to load resource: cancelled" in SafariJquery getJSON 在 Safari 中抛出:“加载资源失败:已取消”
【发布时间】:2011-06-24 04:11:52
【问题描述】:

我在此问题上找到了一些帖子(此处和整个网络)并尝试了建议的解决方案但没有成功,但原始问题存在一些差异。我的例子看起来很简单,所以我很想得到一些关于这个的意见。代码如下:

theURI = "https://<?= $_SERVER['HTTP_HOST'] ?>/validate.php";
theData = {
    'validationType' : 'login',
    'ident' : document.getElementById("login_ident").value,
    'password' : document.getElementById("login_pw").value,
    'loginTries' : <?= $loginTries ?>
}
$.getJSON(theURI, theData, function() {alert('Success!')});

“成功!”警报显示正常,但错误“无法加载资源:已取消”在错误控制台中闪烁。 “validate.php”如下(为清楚起见省略了部分服务器代码),假设变量都是基本有效值:

<?php
echo '{';
echo '"result" : "' . $login_success . '",';
echo '"loginTries" : "' . $loginTries . '",';
echo '"feedback" : "' . $loginFeedback . '",';
echo '"feedbackClass" : "' . $loginTextClass . '",';
if($login_success) {
    echo '"userData" : {';
    $firstPass=true;
    foreach ($g_aUserData as $theKey => $theValue) {
        if(!$firstPass) echo ","; else $firstPass=false;
        echo '"' . $theKey . '" : "' . $theValue . '"';
    }
    echo '}';
}
echo '}';
?>

生成(当然是样本数据):


{"result" : "1","loginTries" : "0","feedback" : "SUCCESSFUL LOGIN!","feedbackClass" : "login_text","userData" : {"firstName" : "Gomez","memberID" : "39203","lastName" : "Aadams","lastLogin" : "","message" : "","credHash" : "3baf7a67271ecfd93kdsid33s2a65c16a9413f652"}}

重新格式化为:

{
    "result" : "1",
    "loginTries" : "0",
    "feedback" : "SUCCESSFUL LOGIN!",
    "feedbackClass" : "login_text",
    "userData" : {
        "firstName" : "Gomez",
        "memberID" : "39203",
        "lastName" : "Aadams",
        "lastLogin" : "",
        "message" : "",
        "credHash" : "3baf7a67271ecfd93kdsid33s2a65c16a9413f652"
    }
}

有什么想法吗?我试过了:

1) 将数据加载到查询字符串中并完全省略数据参数。
2) 将调用更改为相对。
3) 将“https”改为“http”。

更新:好的。基于 cmets,我支付了愚蠢的税,并让代码生成 JSON 数据,而无需任何 HTML 修饰。奇怪的是,我仍然收到 same 错误。尝试了上述相同的修复方法,但仍然无法正常工作。

【问题讨论】:

  • 为什么要将 JSON 放入 HTML 页面?
  • 我应该让它原始输出吗?嘎。我希望事情不是那么简单。 (嗯,我会,但我会很尴尬)。现在开始尝试生成它。
  • 好的。对代码(和问题)进行了更新。我还使用 JSLint 验证了生成的 JSON 代码。

标签: php jquery ajax safari


【解决方案1】:

因此,事实证明问题与 ajax 调用无关,而是与用于输入的表单(已转换为 Ajax)有关。一旦我在表单中添加了“return false”,一切都清楚了。

但我必须感谢 lonesomeday 提醒我 AJAX 是如何工作的(我已经有一段时间没有编写代码了。)在最初准备问题的过程中,我能够在发帖,总而言之,简单地提出问题就大有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-01
    • 2017-09-16
    • 2016-02-16
    • 1970-01-01
    • 2015-09-17
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多