Kel*_*vin 1 javascript php ajax
console.log($obj.longurl)从 Chrome 开发者控制台执行时提示错误
Uncaught SyntaxError: Unexpected token {
$.ajax.complete
L jquery.min.js:19
N
Run Code Online (Sandbox Code Playgroud)
下面是我从 HTML 页面执行并提交表单以调用外部 PHP 文件的脚本。
从http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js调用 Javascript
$('#shortener').submit(function(e) {
e.preventDefault();
$('#status').text('');
$.ajax({
cache: false,
type: "POST",
dataType: "json",
data: $('#shortener').serialize(),
url: $('#shortener').attr('action'),
complete: function (XMLHttpRequest, textStatus) {
console.log(XMLHttpRequest);
$obj = JSON.parse(XMLHttpRequest.response);
if ($obj.loginResult == "Passed") {
($('#longurl').val() === "") ? console.log("Empty longurl") : console.log($obj.longurl);
} else {
$('#status').text("Login Failed");
};
}
});
return false;
});
Run Code Online (Sandbox Code Playgroud)
PHP
echo json_encode(array('loginResult' =>'Passed'));
echo json_encode(array('longurl' => BASE_HREF . $shortened_url));
Run Code Online (Sandbox Code Playgroud)
typeof$obj.longurl是字符串,但不知道为什么可以返回到$('#shortener').val(),有没有人有类似的经验并有解决方案?
您的 PHP 代码生成了无效的 JSON。您基本上是在一个接一个地回显两个 JSON 编码的对象,这总体上导致无效的 JSON。它看起来像:
{"loginResult": "Passed"} {"longurl": "<some URL>"}
Run Code Online (Sandbox Code Playgroud)
二{是语法错误。
它应该是一个对象数组(尽管这将是一个奇怪的结构)
[{"loginResult": "Passed"}, {"longurl": "<some URL>"}]
Run Code Online (Sandbox Code Playgroud)
或一个对象
{"loginResult": "Passed", "longurl": "<some URL>"}
Run Code Online (Sandbox Code Playgroud)
创建并编码一个数组:
echo json_encode(array(
'loginResult' => 'Passed',
'longurl' => BASE_HREF . $shortened_url
));
Run Code Online (Sandbox Code Playgroud)
另一个问题可能是,至少在官方上,传递给完整回调的jqXHR 对象没有.response属性。由于您也已经设置了该dataType: 'json'选项,因此您无需显式解析响应。
这是您的代码的改进版本:
$.ajax({
cache: false,
type: "POST",
dataType: "json",
data: $('#shortener').serialize(),
url: $('#shortener').attr('action'),
}).done(function (data) {
if (data.loginResult == "Passed") {
($('#longurl').val() === "") ? console.log("Empty longurl") : console.log(data.longurl);
} else {
$('#status').text("Login Failed");
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9589 次 |
| 最近记录: |