为什么indexOf没有正确评估ajax响应?

时间:2017-05-15 17:15:44

标签: javascript jquery ajax

我正在尝试评估ajax响应以了解API请求是成功还是失败。如果请求成功,我想删除添加客户链接。

<span id='addCustomer'><a class='actionlink' id='addCustomerLink' href='javascript:addCustomer()'>Add Customer</a></span><span id='addCustomerResults'></span>

以下文字出现在所有失败的请求中“”添加客户请求失败。“”失败“一词不在任何成功的响应中.indexOf应该捕获”失败“一词,但由于某种原因,它不是

    $.ajax({
        type: 'post',
        url: 'include/ajax.php?action=add',
        data: $('#lead-form').serialize(),
        success: function (response) {
            $("#addCustomerResults").html(response);

            if (response.indexOf("Failed") != -1) {         
                $('#addCustomer').html("");  // customer created so remove the add customer link
            }
        }
    });   

响应是一个简单的文本字符串。无法确定响应中是否包含“失败”一词时,为什么要删除“添加客户”链接。

1 个答案:

答案 0 :(得分:-2)

通常是&#34;响应&#34; &#34;成功&#34;中的参数AJAX函数的回调包含有关响应本身的信息,而不包含文本(或任何其他数据)。如果您想阅读文本或JSON或任何其他返回的对象,则必须致电response.data。这是一个AJAX函数示例。

//Making an AJAX call
$.ajax({
    type: "GET",
    url: "host/resource/",
    data: { name: "MyName", address: "123 Toronto St." },
    dataType: "json",
    success: function (response) {
        var returnedData = response.data;
        console.log(JSON.stringify(returnedData));

        //Loop through JSON array
        $.each(returnedData, function (indexInArray, valueOfElement) {
            console.log(indexInArray, valueOfElement);
        });
    },
    error: function (err) {
        console.log(JSON.stringify(err));
    }
});

在你的情况下,因为你正在寻找一个特定的字符串,你会做类似的事情。

var blnFound = response.data.trim().toUpperCase().indexOf("VALUE_TO_SEARCH") > -1

更好的解决方案是创建原型Javascript方法并直接调用它们,这样您就不必完成上述所有操作。