无法在对ASP.NET webmethod的jQuery ajax调用中传递字符串参数

无法在对ASP.NET webmethod的jQuery ajax调用中传递字符串参数,jquery,webmethod,Jquery,Webmethod,我在jQuery ajax调用中向ASP.NET webmethod传递参数时遇到一些问题,它整天都在对我进行监听 我已经看到了解决方案是如何做到的,但它并不适合我 下面是一些代码: function GetString() { var name = "yan"; var fam = "key"; alert(name + " " + fam); $.ajax ({ type: "GET", url: "'Services/MyService.

我在jQuery ajax调用中向ASP.NET webmethod传递参数时遇到一些问题,它整天都在对我进行监听

我已经看到了解决方案是如何做到的,但它并不适合我

下面是一些代码:

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);
    }
});
}

这就是我得到的错误:

你可以看到,我已经尝试了几种方法来实现它,但都没有成功。 有人能指出错误/提出另一种解决方案吗

提前感谢您更改代码

    type: "GET",

在代码更改中

    type: "GET",


经过过去24小时的努力,我终于成功了:) 事情是这样的:

代码隐藏:

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

Jquery:

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);
    }
});
}

注意
如何键入:“Post”
以及
数据行如何更改


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

经过我在过去24小时的努力,我终于成功了:) 事情是这样的:

代码隐藏:

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

Jquery:

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);
    }
});
}

注意
如何键入:“Post”
以及
数据行如何更改


感谢所有试图提供帮助的人,大家都贡献了一点:)

是aspx页面或Web服务上的webmethod,因为aspx的webmethod不支持GET.try
data:{firstName:“Chris”,lastName:“Brandsma”}
而不是
数据:“{firstName':'Chris,'lastName':'Brandsma'}”
我创建了一个Web服务,C代码就写在这个文件中。所以我猜它不是一个aspx,而是一个Web服务…@mamdouh-它仍然不工作并引发错误:
alert(“bad”)
:(说真的,没有人遇到过这样的问题吗???webmethod是在aspx页面还是Web服务上,因为aspx的webmethod不支持GET。试试
数据:{firstName:“Chris”,lastName:“Brandsma”}
而不是
数据:“{'firstName':'Chris','lastName':'Brandsma'}”
我创建了一个Web服务,C代码写在该文件中。所以我猜它不是一个aspx,而是一个Web服务…@mamdouh-它仍然不工作并引发错误:
警报(“坏”)
:(说真的,没有人遇到过这样的问题吗???我已经试过了。此外,在我的代码背后,我有
[ScriptMethod(UseHttpGet=true)]
这难道不意味着我应该首先使用
类型:“GET”
??无论如何,我尝试了另一个建议,但也不符合要求:
数据:JSON.stringify({fname:“yan”,lname:“key”}),
当你没有参数时,“GET”起作用。当你有参数时,“POST”起作用,但“GET”不起作用。请解释一下原因。我已经尝试过了。另外,在我的代码中我有
[ScriptMethod(UseHttpGet=true)]
这不意味着我应该使用
键入:“GET”
首先?!?!无论如何,我尝试了另一个建议,但也不符合要求:
数据:JSON.stringify({fname:“yan”,lname:“key”}),
当你没有参数时,“GET”起作用。当你有参数时,“POST”起作用,但“GET”不起作用。请解释原因。