2009-09-12 96 views
1

我正在開發ASP.NET中使用客戶端腳本的註冊表單。所以我使用jQuery.ajax方法通過ASP.NET Web服務將所有字段的數據發佈到服務器。但是當我執行Jquery.ajax方法時,它會調用錯誤函數。我試圖在Firefox中使用Firebug進行調試。它顯示錯誤500內部服務器錯誤。現在我所假設的是將數據插入到WebService中我需要使用POST方法,並且類似地,我需要Webservice內部的服務器端上的一個函數,該函數可以使用POST方法調用。我提供了很少的代碼片段來說明我所做的。jQuery.ajax調用Web服務的問題

我的客戶端腳本:在服務器上

//My Client Side Function 
function registerUser() 
{ 
    var User = { 
     FirstName:$get("txtFirstName").value, 
     LastName:$get("txtLastName").value 
     . 
     . 
     //and so on....This way I creat my json object to POST on server 
     }; 

     //jQuery to POST Data 
     jQuery.ajax({ 
     type:"POST", 
     url:"Service/UserRegistration.asmx/InsertUser", 
     data:User, 
     success:notifyUser, 
     error:setErrorField 
     }); 

} 

//Function for Success Complition 
function notifyUser(msg) 
{ 
     alert("Registration Successfull"); 
} 

我的web服務:

//My C# Web Service Logic 
[WebMethod] 
public void InsertUser(User use) 
{ 
     FreeUser us = new FreeUser(); 
     us.FirstName = use.FirstName; 
     . 
     . 
     //and so on 
} 

現在我想的是,POST方法需要WebInvoke類的屬性。我如何製作可以通過JavaScript調用的方法?我可能不得不爲此使用WebInvoke

回答

6

如果您對服務器端(ASP.NET 2.0 + ASP.NET提供ASP.NET AJAX AJAX擴展v1.0或ASP.NET 3.5+),我發現最簡單的方法是在客戶端和服務器端之間使用JSON。你只需要在[ScriptService]屬性添加到您的服務,然後使用這種形式來調用服務:這裏

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "WebService.asmx/WebMethodName", 
    data: "{}", 
    dataType: "json" 
}); 

欲瞭解更多信息,請參閱完整的信息:http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/

爲了像在示例代碼中一樣提供JavaScript對象,則還需要use JSON.Stringify to generate an appropriate JSON string to pass to the server-side

0

如果你要提交一個JSON對象,下面的選項添加到$.ajax

contentType: "application/json; charset=utf-8",