【发布时间】: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 代码。