0

我在对 ASP.NET webmethod 的 jQuery ajax 调用中传递参数时遇到了一些问题,它整天都在困扰着我。

我已经看到了它是如何完成的解决方案,但它对我不起作用。

这是一些代码:

function GetString() {

    var name = "yan";
    var fam = "key";
    alert(name + " " + fam);

    $.ajax
({
    type: "GET",
    url: "'Services/MyService.asmx/returnString",
    dataType: "json",
    //data: "{ 'fname' : '" + name + "' , 'lname' : '" + fam + "'}",
    //data: "{ 'fname' : 'name' , 'lname' : 'fam'}",
    //data: '{"fname":"Chris","lname":"Brandsma"}',
    data: "{'fname':'Chris','lname':'Brandsma'}",
    contentType: "application/json; charset=utf-8",
    error: function (jqXHR, textStatus, errorThrown)   //what to do if fails
    {
        alert('bad, ' + errorThrown + ", " + jqXHR.responseText + ", " + textStatus);
    },
    success: function (data)           //what to do if succedded
    {
        alert(data.d);
    }
});

}

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string returnString(string fname, string lname)
{
    return ("my name is " + fname + " " + lname);
}

这就是我得到的错误: 错误:响应文本:

你可以看到我已经尝试了几种方法来完成它,但都没有奏效。任何人都可以指出错误/建议另一种解决方案吗???

提前致谢

4

2 回答 2

3

在过去 24 小时内我一​​直在尝试之后,我终于成功了 :) 事情是这样的:

代码背后:

[WebMethod]
[ScriptMethod(UseHttpGet=false)]
public string returnString2(string fname, string lname)
{
    return "{ \"FirstName\" : "\" + fname + "\" , \"LastName\" : "\" + lname + "\"}";
}

请注意,(UseHttpGet=false)

查询:

function GetString2() {

    var name = "yan";
    var fam = "key";
    alert(name + " " + fam);

    $.ajax
({
    type: "POST",
    url: 'Services/MyService.asmx/returnString2',
    dataType: "json",
    data: JSON.stringify({ fname: "yan" , lname: "key" }),
    contentType: "application/json; charset=utf-8",
    error: function (jqXHR, textStatus, errorThrown)   //what to do if fails
    {
        alert('bad, ' + errorThrown + ", " + jqXHR.responseText + ", " + textStatus);
    },
    success: function (data)           //what to do if succedded
    {
        alert(data.d);
        var person = $.parseJSON(data.d);
        alert(person.FirstName);
    }
});

}

注意type:"Post"那条data线是如何改变的

感谢所有试图提供帮助的人,你们都做出了一点贡献:)

于 2013-01-28T10:03:48.067 回答
1

在您的代码更改中

    type: "GET",

    type: "POST",
于 2013-01-28T09:38:57.787 回答