Im пытается получить страницу, разговаривая с webservice через jquery.json webservice asp.net 2.0
это JQuery:
function Test(item) {
$.ajax({
type: "POST",
url: "WebService.asmx/test",
data: '{' +
'Item:"' + item + '"' +
'}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
var data = jQuery.parseJSON(msg);
if (!data.error) {
alert("YES!!");
}
else {
alert("Error" + " " + data.error);
}
},
error: function (msg) {
alert('Get Details Failure: ' + msg);
}
});
};
Это веб-сервис:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
using System.Web.Script.Services;
using System.Web.Script.Serialization;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class WebService : System.Web.Services.WebService {
public WebService() {}
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public string Test(string Item)
{
JavaScriptSerializer js = new JavaScriptSerializer();
string strJSON = js.Serialize(Item);
return strJSON;
}
}
, но я получаю свою ошибку:
System.InvalidOperationException: Request format is invalid: application/json; charset=utf-8.
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
почему ???
Не напрямую связана с вашим вопросом, вы не должны вручную использовать JavaScriptSerializer в ScriptService. ASP.NET уже делает это автоматически: http://encosia.com/asp-net-web-services-mistake-manual-json-serialization/ –
"; charset = utf-8" не требуется в вашем типе контента –