2012-01-11 57 views
0

我的ajax調用僅在第一次運行。之後,我得到一個方法不允許的例外。 這裏是我的Java腳本代碼:Jquery Ajax Call只能工作一次,直到我重新啓動應用程序

$('.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; 
    } 


}); 

它調用的方法很簡單:

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

當我重新啓動應用程序(不只是重新加載頁面),又是第一個電話工程及任何後續通話再次失敗。

編輯:當我剛剛在函數返回true Ajax調用總是成功:

[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中使用。 – 2012-01-11 14:36:44

+0

據我所知,如果我不將它設置爲false,表單將立即提交。 – Luke 2012-01-11 14:40:07

+1

不,如果您從提交處理程序返回false,它將不會立即提交。 – 2012-01-11 14:40:29

回答

0

我將變量'url'的名稱更改爲另一個名稱,例如'myurl',我工作了。看起來變量'url'有一些預定義的值。

相關問題