小编典典

尝试发布数据时,使用Jquery调用.Net Web服务会造成麻烦

ajax

当数据密钥没有要发送的数据(即数据)时,以下代码将正确执行:“
{}”为空的JSON对象,并且Web服务不接受任何参数。我想将一些数据发布到Web服务,但是遇到了麻烦。

当我尝试将其设置为data:“ {‘name’:’Niall’,’surname’:’Smith’}”时,出现错误

{"Message":"Invalid web service call, missing value for parameter: \u0027json\u0027.","StackTrace":"   at System.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   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}

Web服务未执行。

这是我的Jquery调用,用于将我的数据发布回服务器。

    $.ajax({
        type: "POST",
        url: "/WebServices/BasketServices.asmx/AddItemToBasket",
        data: "{'name':'niall'}", // Is this Correct??
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnItemAddedSuccess
    });
function OnItemAddedSuccess(result,eventArgs) {
    //deserialize the JSON and use it to update the Mini Basket
    var response = JSON.parse(result.d);
}

这是我的WebService

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class BasketServices : System.Web.Services.WebService
{
    [WebMethod(true)]
    public string AddItemToBasket(string json)
    {
       //do stuff
       return myString.toJSON();
    }
}

可能是什么问题?是要发布的JSON数据的格式吗?可能是我没有在WebService上设置正确的属性。戴夫·沃德(Dave
Ward)的帖子中
提到的问题呢?

我已经尝试了所有我能想到的。有人有什么想法吗?


阅读 175

收藏
2020-07-26

共1个答案

小编典典

我认为Web服务希望json设置该参数。试试这个AJAX调用:

var data = {'name':'niall'};

$.ajax({
    type: "POST",
    url: "/WebServices/BasketServices.asmx/AddItemToBasket",
    data: "json=" + JSON.stringify(data),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: OnItemAddedSuccess
});

JSON.stringify()与“官方”实现中的方法类似的方法在哪里:http :
//json.org/js.html

2020-07-26