Ajax响应与字符串的比较

时间:2016-08-09 23:49:35

标签: ajax

在下面的例子中,我的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*/
        }
});

1 个答案:

答案 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);
?>