2017-04-06 8 views
0

これについて既に質問があることを認識していますが、誰も私の問題を解決できませんでした。AJAX Submit - ステータス200 with error

私はAJAXを使用してjQueryのモーダルにフォームを送信しようとしているが、それは、ステータス200を言ってもかかわらず、働いていないここでは、コードです:

$(document).ready(function() { 
    $("#dialog-form").dialog({ 
     autoOpen: false, 
    }); 

    $("#add-course").click(function() { 
     $("#dialog-form").dialog("open"); 
     return false; 
    }); 

    $("#btncancel").click(function() { 
     $("#dialog-form").dialog("close"); 
    }); 

    $('#<%=btnsubmit.ClientID%>').on('click', function (e) { 
     e.preventDefault(); 
     var courseDetails = {}; 
     courseDetails.Code = $('#<%=addcode.ClientID%>').val(); 
     courseDetails.Name = $('#<%=addname.ClientID%>').val(); 

     var jsonData = JSON.stringify({ 
      courseDetails: courseDetails 
     }); 

     $.ajax({ 
      url: '<%=ResolveUrl("updatetest.aspx/addCourseSP") %>', 
      type: "POST", 
      data: jsonData, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: OnSuccess, 
      error: OnErrorCall, 
     }); 

     function OnSuccess(response, jqXHR, textStatus, errorThrown) { 
      var result = response.d; 
      if (result == "success") { 
       $("#msg").html("Success"); 
       $("#dialog-form").dialog("close"); 
      } else { 
       $("#msg").html("jqXHR: " + JSON.stringify(jqXHR) + " " + "AJAX error: " + textStatus + ' : ' + errorThrown); 
      } 
     } 

     function OnErrorCall() { 
      $("#msg").html("error"); 
     } 
    }); 
}); 

コードが背後に私は作品をチェックし、ストアドプロシージャを呼び出しますが、 。私はjsonlint.comのJSON文字列もチェックしており、有効であると言います。

私は基本的に同じことを言うブラウザ(Chrome/Firefox)でF12を使用して、状態200を「エラー」でチェックしました。 JSON文字列はParamsの下にあるので、私はそれが問題だとは思わない。

さまざまな方法でデバッグしようとしましたが、今はjqXHRを返しています。「成功」AJAXエラー:[オブジェクトオブジェクト]:未定義です。私は他に何をしようとしているのか分からない。誰でもアイデアはありますか?あなたのスクリプトでこれを使用しようとすると

success

Type: Function(Anything data, String textStatus, jqXHR jqXHR)

function OnSuccess(response, jqXHR, textStatus, errorThrown) 

あなたのパラメーターリストと一致していない、textStatusは文字列とerrorThrownではありませんされていますよう

答えて

0

jQuery.ajax()は成功コールバックを示していは未定義です。

したがって、要求は成功しました(ステータス200)が、クライアントに応答が返された後にスクリプトがエラーを生成しています。

+0

おかげでエラーを検討する場合は正しく、JSONをフォーマットする必要があります返されたことを意味します!私は私の機能を変更し、私は今これを取得している:1)jqXHR {"readyState":4、 "responseText": "{\" d \ ":\"エラー\ "}"、 "responseJSON":{"d" "status":200、 "statusText": "OK"} 2)テキストステータス:成功3)データ:[オブジェクトオブジェクト] – user7703048

+0

ステータスがまだ200の理由を尋ねているのは、フレームワーク要求が正常に処理されたとみなします。ビジネスロジックエラーをトラップしようとしている場合は、返信ステータスを明示的に変更するか、レスポンス 'responseJSON'でエラーフラグをチェックする必要があります。 – Jasen

0

あなたの関数は次の行

dataType: "json", 

が含まれているそれは、データが、それはない、それはそれは

関連する問題