我在这个问题上发现了一些帖子(此处和网络上)并尝试了建议的解决方案但没有成功,但原始问题存在一些差异。我的例子看起来很简单,所以我很想得到一些意见。这是代码:
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!')});
<?= $_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修剪。奇怪的是,我仍然得到相同的错误。尝试了上面提到的相同修复,仍然无法正常工作。
答案 0 :(得分:2)
因此,事实证明问题与ajax调用无关,而是与用于输入的表单(已转换为Ajax)有关。一旦我将“return false”添加到表单中,一切都清理完毕。
但是我必须感谢lonesomeday提醒我AJAX是如何工作的(自从我编码以来已经有一段时间了。)在最初准备问题的过程中,我能够在之前挖出一些其他错误。帖子,所以总而言之,只是简单地问这个问题是有帮助的。