当前位置:编程学习 > C#/ASP.NET >>

Jquery ajax webservice 只要有参数就出错

webservice不带参数可以正常访问,只是在默认的HelloWorld里加个参数就出错
[WebMethod]
public string HelloWorld(string somebody)
{
    return "Hello World";
}

Jquery代码:
$.ajax({
    type: "post",
    contentType: "application/json; charset=utf-8",
    url: "WebService.asmx/HelloWorld",
    data: "{somebody:'Krime'}",
    dataType: 'json',
    success: function (msg) {
        alert(msg);
    }
});

试过了
data: "{somebody:'Krime'}",
data: "{'somebody':'Krime'}",
data: "{\"somebody\":\"Krime\"}",
都不行
--------------------编程问答--------------------         [WebMethod]
        public static string HelloWorld(string somebody)
        {
            return "Hello World";
        }

   var json = "'{\"param\":\"abc\"}'";
    $.ajax({
        url: "test_ajax.aspx/HelloWorld",
        type: "POST",
        contentType: "application/json",
        data: '{ "somebody":'+ json +'}',
        cache:false,
        success: function (result) {
            alert(result.d);
        },
        error: function () {
            alert("error");
        }
    });
--------------------编程问答--------------------     $.ajax({
        url: "test_ajax.aspx/HelloWorld",
        type: "POST",
        contentType: "application/json",
        data: '{ "somebody":"abc"}',
        cache:false,
        success: function (result) {
            alert(result.d);
        },
        error: function () {
            alert("error");
        }
    });

其实这样也是可以的 --------------------编程问答-------------------- 没什么问题 就是webservice返回的数据是封装在data.d里 你应该写成alert(msg.d)
json格式{'somebody':'Krime'}  写成这样比较好这样 data:{'somebody':'Krime'}  --------------------编程问答--------------------
$.ajax({
    type: "post",
    contentType: "application/json; charset=utf-8",
    url: "WebService.asmx/HelloWorld",
    data: "{somebody:'Krime'}",
    dataType: 'json',
    success: function (msg) {
        alert(msg);
    }
});


 data: "{somebody:'Krime'}" 
这里的 data要传递一个 json过去,而不是传递一个字符串。

 data: {somebody:'Krime'}

这样就好了。


=======

另外 dataType: 'json', 这个参数的意思是,告诉jQuery,返回值的格式是json的,麻烦自动转换一下。

也就是说,你的 WebService.asmx/HelloWorld 返回值必须是一个合法的json格式的字符串。否则在jQuery自动转换的时候会报错。

--------------------编程问答-------------------- js调本地的webservice 还用ajax干什么??    http://www.cnblogs.com/manyiString/archive/2012/05/24/js4.html像这样就可以了 --------------------编程问答-------------------- alert(msg.d);
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,