Jquery getJSON抛出:在Safari中“无法加载资源:已取消”

时间:2011-02-09 14:08:58

标签: php jquery ajax safari

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

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”如下所示(为清楚起见,省略了一些服务器代码),假设变量基本上都是有效值:

<?= $_SERVER['HTTP_HOST'] ?>

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

<?= $loginTries ?>

哪个重新格式化为:

<?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 '}';
?>

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

1)将数据加载到查询字符串中并完全省略数据参数 2)将呼叫改为亲属 3)将“https”更改为“http”。

更新:好的。基于评论,我支付了我的愚蠢税,并让代码生成JSON数据,没有任何HTML修剪。奇怪的是,我仍然得到相同的错误。尝试了上面提到的相同修复,仍然无法正常工作。

1 个答案:

答案 0 :(得分:2)

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

但是我必须感谢lonesomeday提醒我AJAX是如何工作的(自从我编码以来已经有一段时间了。)在最初准备问题的过程中,我能够在之前挖出一些其他错误。帖子,所以总而言之,只是简单地问这个问题是有帮助的。