2017-05-15 4 views
-1

私はAPIリクエストが成功したか失敗したかを知るためにajaxレスポンスを評価しようとしています。リクエストが成功した場合は、顧客追加リンクを削除したいと思います。なぜindexOfはajax応答を正しく評価していませんか?

<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 
      } 
     } 
    }); 

応答は、単純なテキスト文字列です。追加のお客様のリンクは応答が単語が「失敗」が含まれているか否か削除されている理由を理解することはできません。通常

+0

大文字? – Hodrobond

+0

残念ながら大文字ではありません –

+2

これをデバッグすることは不可能です。いくつかのデバッグコードを追加して、なぜそれが失敗しているのかを確認する必要があります。 – epascarello

答えて

-2

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のメソッドのプロトタイプを作成し、それらを直接呼び出すことですので、あなたは上記のすべてを行う必要はありません。

+0

これは彼の 'ajax.php'ファイルが返すものに100%依存しています。 "Failed"という文字列を吐き出している可能性があります。それはJSONでもかまいません。それとも他の何百万ものかもしれない。 'data'プロパティを使って何らかのJSON応答を受け取っているとは思えません。 –

+0

これは、[success]関数の最初の引数がデータそのものであることを示す[documentation](http://api.jquery.com/jquery.ajax/#jQuery-ajax-settings)と完全に矛盾します。*データdataTypeパラメータまたはdataFilterコールバック関数(指定されている場合)に従って書式設定された、サーバーから返された* –

関連する問題