在下面的例子中,我的Ajax响应是'成功'[type is string],我正在比较'success'[type is string]。那么为什么控件不能进入if条件呢?
$.ajax({
url: "controller.php",
method: "POST",
data: { loginData : $("#loginForm").serialize()},
dataType: "text",
success: function (response) {
if(response=='success') // response coming as is 'success'
{
window.open('www.google.com');
}
},
error: function (request, status, error) {
/* error handling code*/
}
});
答案 0 :(得分:1)
您将数据作为纯文本传递。我建议将数据作为JSON传递,因为它更容易从服务器捕获响应。
此外,您使用的变量将包含data: { loginData : $("#loginForm").serialize()}
中的更多变量(表单输入)。我建议您使用.serializeArray()
将数据作为JSON变量发送,您可以在服务器脚本中捕获这些变量。
所以:
$.ajax({
url: "controller.php",
method: "POST",
data: $("#loginForm").serializeArray(),
dataType: "json",
success: function (response) {
if(response["success"]) {
window.open('www.google.com');
}
},
error: function (request, status, error) {
// error handling code
}
});
在controller.php
:
<?php
if(isset($_POST['input'])) { // use your input's name instead
$response['success'] = true;
} else {
$response['success'] = false;
}
header('Content-Type: application/javascript');
echo json_encode($response);
?>
而且,使用最后一段代码片段,您可以传递超过&#34;成功&#34; (仅仅因为你正在使用数组)。例如:
<?php
if(isset($_POST['input'])) { // use your input's name instead
$response['success'] = true;
$response['open'] = 'www.google.com';
} else {
$response['success'] = false;
}
header('Content-Type: application/javascript');
echo json_encode($response);
?>