我正在使用JQuery和Ajax與ASP.Net Web服務進行接口。這裏是jQuery代碼:獲取500錯誤
$.jrpc = function(url, id, method, params, success, error) {
var request = $.json_stringify({
'jsonrpc': '2.0', 'method': method,
'params': params, 'id': id});
return $.ajax({
url: url,
data: "json=" + encodeURIComponent(request),
success: success,
error: error,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: true,
cache: false,
//timeout: 1,
type: 'POST'});
};
這裏是Web服務代碼:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class Access : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string EntryMethod(string json)
{
Requests d = JsonConvert.DeserializeObject<Requests>(json);
Response resp = new Response();
resp.jsonrpc = d.jsonrpc;
resp.result = "Got the call!";
resp.id = d.id;
resp.error = null;
JavaScriptSerializer response = new JavaScriptSerializer();
string r = response.Serialize(resp);
return r;
}
}
我收到此錯誤:
[AJAX]錯誤 - 服務器效應初探是: {「消息「:」無效的JSON基元:json。「,」StackTrace「:」在System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\ r \ n System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32深度) \ r \ n在System.Web.Script.Serialization.JavaScript在System.Web.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer序列化程序,字符串輸入,類型類型,Int32 depthLimit)\ r \ n上的ObjectDeserializer.BasicDeserialize(String input,Int32 depthLimit,JavaScriptSerializer序列化程序)\ r \ n .Script.Serialization.JavaScriptSerializer.Deserialize [T](String input)\ r \ n在System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext上下文,JavaScriptSerializer序列化程序)\ r \ n .RestHandler.GetRawParams(WebServiceMethodData methodData,HttpContext的上下文)\ r \ n在System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext的上下文中,WebServiceMethodData methodData)」, 「ExceptionType」: 「System.ArgumentException」}
使用ASP.Net webservice測試頁面,以下是我的標題和請求字符串: Cache-Control:隱私te,max-age = 0 Date:Wed,03 Oct 2012 19:47:16 GMT Content-Length:149 Content-Type:text/xml;字符集= UTF-8 服務器:ASP.NET開發服務器/ 10.0.0.0 X-ASPNET-版本:4.0.30319 連接:關閉
JSON =%7B%22jsonrpc%22%3A%222.0%22% 2C%22方法%22%3A%22測試%22%2C%22params%22%3A%5B%5D%2C%22%%22%3A1%7D
這裏是我的Ajax調用的頭/請求字符串,沒有工作: Cache-Control:private Date:Wed,03 Oct 2012 19:47:09 GMT Content-Length:1062 Content-Type:application/json;字符集= UTF-8 jsonerror:真 服務器:ASP.NET開發服務器/ 10.0.0.0 X-ASPNET-版本:4.0.30319 連接:關閉
JSON =%7B%22jsonrpc%22%3A% 222.0%22%2C%22方法%22%3A%22%22%2C%22%22%3A%5B%5D%2C%22%%22%3A1%7D
任何想法,爲什麼我得到這個錯誤?我試着用Google搜索,但沒有結果真的幫助我。
編輯:
如果我使用: 數據: 「{ 'jsonrpc': '2.0', '方法': '測試', 'PARAMS':[], 'ID':1}」,
我得到這個錯誤: [AJAX]錯誤 - 服務器效應初探是: { 「消息」: 「無效的Web服務調用,進行參數缺失值:\ u0027json \ u0027。」, 「堆棧跟蹤」:」在系統.Web.Script.Services.WebServiceMethodData.CallMethod(Object target,IDictionary 2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary
2 parameters)\ r \ n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context,WebServiceMethodData methodData,IDictionary`2 rawParams)\ r \ n在System.Web.Script.Services.R estHandler。ExecuteWebServiceCall(HttpContext的上下文中,WebServiceMethodData methodData) 「 」ExceptionType「: 」System.InvalidOperationException「}
如果我使用: 數據:」 JSON = { 'jsonrpc': '2.0', '方法': '測試' 'PARAMS':[], 'ID':1}」,
我得到這個錯誤: [AJAX]錯誤 - 服務器效應初探是: { 「消息」: 「無效的JSON原始:JSON」 「System.Web.Script的System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32深度)\ r \ n上的System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\ r \ n中的」StackTrace「:」 Serialization.JavaScriptObjectDeserializer.BasicDeserialize(字符串輸入,Int32 depthLimit,JavaScriptSerializer序列化程序) \ r \ n在System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer序列化程序,字符串輸入,類型類型,Int32 depthLimit)\ r \ n在System.Web.Script.Serialization.JavaScriptSerializer.Deserialize [T](String輸入)\ r \ n在System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext上下文,JavaScriptSerializer序列化程序)\ r \ n System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData,HttpContext上下文)\ r \ n \ r \ n在System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext上下文,WebServiceMethodData methodData)「,」ExceptionType「:」System.ArgumentException「}
似乎你的代碼有反序列化你發送給它的問題,你可以發佈你發送的實際json嗎? – ars265
發表於json。 – Sugitime