2012-05-29 28 views
0

的在做一個AJAX調用而言,我們用下面的方法:C#MVC最佳方式利用AJAX

$.ajax({ 
      type: "POST", 
      async: false, 
      url: '@Url.Action("CheckPhone", "Progg")', 
      data: { input: WebPhoneNum 
      }, 
      success: function (iReturn) { 
       if (iReturn == 0) { 
        alert(Phone Number must be in format (XXX) XXX-XXXX. Please Re-Enter'); 
        submitval = false; 
       } 
      }, 
      error: function (xhr, status, error) { 
       var err = eval("(" + xhr.responseText + ")"); // Boil the ASP.NET AJAX error down to JSON.      
       alert('Call to CheckPhone failed with error: ' + err.Message); // display the error raised by the server 
      } 
     }); 

注意它是如何使一個呼叫控制器,並返回一個值。我想知道是否有更好的方法來做到這一點。我知道.NET MVC有一些內置的Ajax調用,但找不到適合我下面的工作。我知道.NET MVC有一個超鏈接的Ajax調用構建,但這不是我所需要的。我只需要對返回一些值的控制器進行調用。

感謝

+0

可能是更好的地方是代碼審查 –

回答

0

這裏只有一個,你需要解決的事情:

async: false 

必須成爲:

async: true 

,否則你是不是做AJAX。您正在向服務器發送凍結客戶端瀏覽器的同步請求。

除此之外,您似乎正在使用此AJAX請求進行一些遠程驗證。你可能會看看內置的[Remote]屬性,它可以避免你編寫所有的代碼。您只需修飾需要使用此屬性進行驗證的視圖模型屬性,然後通過包含適當的腳本來啓用不引人注意的客戶端驗證。

+0

嗨達林,我熟悉REMOTE。如果我想返回說一個JSON對象怎麼辦?根據我的理解,遠程可能無法正常工作,因此返回true/false。 –

+1

如果是用於驗證目的,爲什麼你需要返回一個JSON對象?你打算如何使用它?您尚未提供任何關於您想要實現的內容的情況,但您需要採取最佳做法。 –