JavaScript代码未正确检查ajax请求
我有一个星期四的案例,我想知道为什么这不起作用 问题是:即使页面成功返回数组值,我也无法从AJAX请求返回数组值 下面是我的AJAX请求:JavaScript代码未正确检查ajax请求,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个星期四的案例,我想知道为什么这不起作用 问题是:即使页面成功返回数组值,我也无法从AJAX请求返回数组值 下面是我的AJAX请求: $.ajax({ type: "GET", url: "get-sendgrid-info.php?username=" + emailToCheck, success: function(dataSG) { console.log("Length: " + dataSG.length + "
$.ajax({
type: "GET",
url: "get-sendgrid-info.php?username=" + emailToCheck,
success: function(dataSG) {
console.log("Length: " + dataSG.length + " Username: " + dataSG[0].username);
if (dataSG[0].username) {
console.log('CURRENTLY IN SEND GRID!');
$(".sgstatus").html("<div style='font-weight:bold;color:green;'>CURRENTLY IN SENDGRID</div>");
}else{
console.log('NOT IN SEND GRID!');
$(".sgstatus").html("<div style='font-weight:bold;color:red;'>NOT IN SENDGRID</div>");
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest);
console.log(errorThrown);
}
});
它将输出如下内容:
Array
(
[0] => stdClass Object
(
[username] => sample@email.net
[email] => sample@email.net
[active] => true
[first_name] => John
[last_name] => Doe
[address] => 123 Fake Street
[address2] => Suite117
[city] => Denver
[state] => CO
[zip] => 12345
[country] => US
[phone] => 555-555-5555
[website] => http://website.com
[website_access] => true
)
)
1
是的,即使是1
因此,当我在AJAX请求之后尝试此操作时
if (dataSG[0].username) {
console.log('CURRENTLY IN SEND GRID!');
$(".sgstatus").html("<div style='font-weight:bold;color:green;'>CURRENTLY IN SENDGRID</div>");
}else{
console.log('NOT IN SEND GRID!');
$(".sgstatus").html("<div style='font-weight:bold;color:red;'>NOT IN SENDGRID</div>");
}
试试这个:
...
success: function(dataSG) {
dataSG = JSON.parse(dataSG);
...
我认为原因是您的pho脚本正在回显以数组开头的字符串。get方法对返回对象进行智能猜测。当它从php接收到一个字符串时,它无法将其转换为Jason或xml,因此它认为dataSG只是字符串。Json_编码没有成功完成。您必须将php输出格式化为类似['a'、'b'],然后Ajax可以成功地将其转换为JavaScript数组。您是否检查了控制台以查看确切的响应?您正在发回一个JSON对象,但您是否告诉Ajax请求它将接收一个JSON对象?尝试先添加数据类型:“json”,或将结果解析为json字符串。但是最好使用dataType,因为它是提供的。我想我应该提取AJAX的responseText…什么是create-usabg-email.php?我是说,那个文件在哪里?第2629行是什么?那是它所在的同一个文件。另外,之所以有这么多行,是因为有一个包含许多选项的框,我得到了一个未捕获的语法错误:意外的令牌a。我应该注意,我在IIS服务器上,这意味着JSON未启用。。。
Object {readyState: 4, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}abort:
...
Object
create-email.php:2629 SyntaxError: Unexpected token A {stack: (...), message: "Unexpected token A"}message: "Unexpected token A"stack: (...)get stack: function () { [native code] }set stack: function () { [native code] }__proto__: Error
...
success: function(dataSG) {
dataSG = JSON.parse(dataSG);
...