真是痛苦!我試圖從JavaScript調用Web服務,但我似乎無法找到使其工作所需的魔法醬。使用JSON從jQuery調用Web服務
我的代碼看起來是這樣的:
的JavaScript:
$.ajax({
url: "/Services/CompanyContactServices.asmx/AddContact",
type: 'POST',
contentType: "application/json",
dataType: "json",
data: {
companyId: 3725, firstName: firstName, lastName: lastName, email: email
},
success: function (data) {
alert('Success!');
},
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
}
});
Web服務(asmx.cs):
[WebService(Namespace = CompanyListServices.XmlnsNamespace)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class CompanyContactServices : System.Web.Services.WebService
{
public const string XmlnsNamespace = "mynamespace";
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string AddContact(int companyId, string firstName, string lastName, string email)
{
return new JavaScriptSerializer().Serialize(0);
}
}
斷點處開始我AddContact
方法永遠不會到達。
error
的處理程序爲我ajax()
調用包含在jqXHR
以下錯誤消息:
{消息 「:」 無效JSON原始:companyId 「 」堆棧跟蹤。「:」 在System.Web.Script .Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject() 在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(深度Int) 在System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(字符串輸入,的Int32 depthLimit,JavaScriptSerializer串行器) 在System.Web.Scrip t.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer,String input,Type type,Int32 depthLimit) at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize [T](String input) at System.Web.Script.Services。 RestHandler.GetRawParamsFromPostRequest(HttpContext上下文,JavaScriptSerializer序列化程序) at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData,HttpContext context)at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context,WebServiceMethodData methodData)「 「ExceptionType」: 「System.ArgumentException」}」
鉻報告以下網絡數據:
請求URL:... /服務/ CompanyContactServices.asmx /的addContact
請求方法:POST
狀態代碼:500內部服務器錯誤
任何人都可以看到我是什麼失蹤?
[?這是同樣的問題(http://stackoverflow.com/questions/2445874/messageinvalid-json-primitive-recordid) – Blazemonger
你可能要考慮的ASP .NET Web-API讓後端更容易。當然,如果你喜歡對你的web方法中的json序列化和東西進行微管理,你可以堅持使用舊的技術... – Mithon