2012-01-11 10 views
0

私のajaxコールは初めて動作します。その後、私は例外を許可されていないメソッドを取得します。Jquery Ajaxコールは、アプリケーションを再起動するまで1回しか動作しません。

$('.AppFormFormNewOT').submit(function() { 

    var formID = $(this).attr('id'); 

    var appDate = $('#' + formID + ' .dateHiddenInput').val(); 
    var appMit = $('#' + formID + ' .mitHiddenInput').val(); 
    var am = $('#' + formID + ' .amCheckBox').attr('checked'); 
    var pm = $('#' + formID + ' .pmCheckBox').attr('checked'); 

    if (!am && !pm) { 
     alert("Bitte geben Sie einen Halbtag an"); 
     return false; 
    } 
    var vorOrNach; 
    if (am == 'true,false') { 
     vorOrNach = 'FirstHalfDayHasAppointment'; 
    } else { 
     vorOrNach = 'SecondHalfDayHasAppointment' 
    } 

    var url = 'Plan/' + vorOrNach + "/"; 
    var occupied = true; 
    $.ajax({ 
     type: 'POST', 
     url: url, 
     datatype: 'text', 
     async: false, 
     data: { 
      date: appDate, 
      id_person: appMit 
     }, 
     success: function (data) { 
      occupied = data; 
      if (occupied == "True") { 
       alert("Hier ist bereits ein Termin"); 
       return false; 
      } 
     }, 
     error: function (XMLHttpRequest, textStatus, errorThrown) { 
      alert('Ajax error'); 
      alert(textStatus); 
      alert(errorThrown); 
      return false; 
     } 


    }); 
    if (occupied == "True" || occupied == true) { 
     return false; 
    } else { 
     return true; 
    } 


}); 

はそれが呼び出すメソッドは単純です: はここに私のJavaスクリプトコードである

[ScriptMethod][HttpPost] 
    public string FirstHalfDayHasAppointment(DateTime date, int id_person) 
    { 
      bool hasApp = repo.dateWithPersonAlreadyHasApp(date, id_person, HalfDay.AM); 
      return hasApp.ToString(); 


    } 

    [ScriptMethod][HttpPost] 
    public string SecondHalfDayHasAppointment(DateTime date, int id_person) 
    { 
     bool hasApp = repo.dateWithPersonAlreadyHasApp(date, id_person, HalfDay.PM); 
     return hasApp.ToString(); 
    } 

私は、アプリケーション(単にページをリロードせず)を、再度、最初の呼び出しが動作し、任意の次を再起動すると呼び出しは再び失敗します。

編集:私はちょうど機能Ajaxの呼び出しでtrueを返す場合は常に成功:

[ScriptMethod][HttpPost] 
    public string FirstHalfDayHasAppointment(DateTime appDate, int id_person) 
    { 
     return "True"; 



    } 

    [ScriptMethod][HttpPost] 
    public string SecondHalfDayHasAppointment(DateTime appDate, int id_person) 
    { 
     return "True"; 

    } 

をので、問題はサーバー側であるように思われます。しかし、私はこれがajaxと何をしなければならないのか、なぜajaxが例外を許可しないメソッドを返すのか分かりません。この情報が役立つことを願っています。ご協力いただきありがとうございます。

+0

「async:false」を設定する理由は何ですか?それはAJAXの全目的を殺している。実際にはAJAXではありません。それはSJAXです。また '[ScriptMethod]'? ASP.NET MVCで?どうして? ASP.NET MVCで使用するコントローラアクションがあります。 –

+0

私が偽に設定しない限り、私が知っている限り、フォームはすぐに提出されます。 – Luke

+1

いいえ、送信ハンドラからfalseを返すとすぐに送信されません。 –

答えて

0

私は変数 'url'の名前を別の名前、例えば 'myurl'に変更しました。変数 'url'にはあらかじめ定義された値があるようです。