Ajax jquery C#.net JSON从javascript传递params到[webmethod] - 内部服务器错误

时间:2012-11-08 11:38:09

标签: jquery ajax json wcf

javascript传递参数:

<script>    
    var str = "pears"
    $.ajax({
        url: 'WebService.asmx/HelloWorld', //'/WebService.asmx/HelloWorld',
        data: "{outputtype:'" + str + "'}",
        type: "POST",
        cache: false,
        dataType: 'json',
        contentType: "application/json; charset=utf-8",
        success: function (msg) {
            var response = msg.d;
            alert(response);
        },
        error: function (xhr, status, error) {
            alert(error + "\n" + xhr + "\n" + status); //do something if there is an error
        }
    });

和webmethod:

[WebMethod]
public string HelloWorld(String str)
{
    return str;
}

我花了整整一天的时间来尝试这种方法的无数变种传递参数但没有效果。我尝试过不同的机器,我尝试将webmethod静态化,我尝试了各种传递javascript值的方法。

如果我不通过参数,它将起作用。

2 个答案:

答案 0 :(得分:0)

此参数名称存在问题,请在方法中更改参数名称

[WebMethod] public static string HelloWorld(String outputtype)
                           { return outputtype; }

并且make方法是静态的,更新代码在上面

答案 1 :(得分:0)

试试这个网站,它对你有用..

var str = "pears"
$.ajax({
         type: "POST",
         url: "WebService.asmx/HelloWorld",
         data: "{'strabc1': '1'}",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         async: true,
         cache: false,
         success: function (data) {                       
             alert(data.d);
             alert(data.d[0]);                 
         }
      })

服务器端方法

如果你想从服务器端方法返回集合,下面给出的 ArrayList 返回方法将是有用的..,

[WebMethod]
public static ArrayList HelloWorld(string strabc1)
{
        ArrayList arr = new ArrayList();
        arr.Add("abc");
        arr.Add("123");
        arr.Add("fff");
        return arr;
 }

refer this article