我的AJAX中有一个成功函数,它从python脚本返回响应文本,该脚本可以是" SUCCESS"或者" EMPTY"。 现在我想在成功函数中放置一个if循环,但是if循环不起作用。我从我的python脚本中获取了正确的数据,因为我的警告语句工作正常并且打印成功#34;。但它没有进入ifloop
我尝试了很多东西,但是控件没有进入if循环,有人可以告诉我我做错了什么:
submitHandler: function (form) {
$.ajax({
type: 'post',
url: '/cgi-bin/getdataworld.py',
data: $(form).serialize(),
success: function(data) {
//document.write(result);
console.log("result is "+data);
alert(data);
if(data === "SUCCESS"){
window.location = 'index.html';
}
else{
alert("NO DATA PRESENT");
}
},
error: function (responseData) {
console.log('Ajax request not recieved!');
}
});
return false;
}
答案 0 :(得分:11)
这意味着您回复的内容不是"SUCCESS"
。它之前或之后可能有换行符或其他空格,可能不止一个。
也许:
if (/^\s*SUCCESS\s*$/.test(data)) {
// Success
}
或者使用jQuery的$.trim
:
if ($.trim(data) === "SUCCESS") {
// Success
}
另外请确保您没有回复"Success"
或"success"
,因为字符串比较区分大小写。
如果你不确定:
if (/^\s*SUCCESS\s*$/i.test(data)) {
// Success
}
或
if ($.trim(data).toUpperCase() === "SUCCESS") {
// Success
}
答案 1 :(得分:0)
检查“SUCCESS”之前/之后是否有任何额外空格
并尝试改变
if(data === "SUCCESS"){
到
if(data == "SUCCESS"){
答案 2 :(得分:0)
我遇到了同样的问题,我在这里分享我的 PHP 和 JavaScript 代码
PHP 代码:
if(isset($result))
$result_data['status']="success";
else
$result_data['status']="failed";
echo json_encode($result_data);
die;
JavaScript 代码:
$.ajax({
type: "POST",
url: '../ajax_check.php',
data: data_added,
success: function(data)
{
if(data['status']=="success"){
$("#video-frame").append('<div class="alert alert-success" role="alert"><h3>Successfully Added!</h3></div>');
}
}
});
正如你在这里看到的,我使用了 if(data['status']=="success") 因为这个 if 条件无法执行。 data['status'] 带有 undefined 而不是成功。
解决方案: var data1 = jQuery.parseJSON(data); 并使用 data1.status 而不是 data1['status']
var data1 = jQuery.parseJSON(data);
$("#video-frame .alert-success").remove();
if(data1.status=="success"){
$("#video-frame").append('<div class="alert alert-success" role="alert"><h3>Call started with '+allow+'</h3></div>');
}
答案 3 :(得分:-1)
submitHandler: function (form) {
$.ajax({
type: 'post',
url: '/cgi-bin/getdataworld.py',
data: $(form).serialize(),
success: function(data1) {
//document.write(result);
console.log("result is "+data1);
alert(data1);
if(data1 == "SUCCESS"){
window.location = 'index.html';
}
else{
alert("NO DATA PRESENT");
}
},
error: function (responseData) {
console.log('Ajax rariequest not recieved!');
}
});
return false;
}
在这里尝试这两件事我注意到一个是===在if语句和其他你使用数据作为变量一段时间它在一些浏览器中的冲突