Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从jquery ajax GET向.asmx传递多个参数_C#_Jquery - Fatal编程技术网

C# 从jquery ajax GET向.asmx传递多个参数

C# 从jquery ajax GET向.asmx传递多个参数,c#,jquery,C#,Jquery,html 我尝试了多种输入数据的方法,我认为这就是问题所在 尝试1 [WebMethod(EnableSession = true)] [ScriptMethod(UseHttpGet = true)] public string testGetParametersDynamic(string firstName, string lastName) { string fullName = firstName + lastName; return fullName; } 尝试2

html

我尝试了多种输入数据的方法,我认为这就是问题所在

尝试1

[WebMethod(EnableSession = true)]
[ScriptMethod(UseHttpGet = true)]
public string testGetParametersDynamic(string firstName, string lastName)
{
    string fullName = firstName + lastName;

    return fullName;
}
尝试2:

function testGetParametersDynamic2()
    {
        $.ajax(
        {
            post: 'GET',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            data: '{"firstName":"' + $('#myFirstName').val() + '","lastName":' +
                    $('#myLastName').val() + '"}',
            url: 'UtilitieService.asmx/TestGetParametersDynamic',
            success: function (result)
            {
                var test = result.d;
                var outputDiv = $('outputGET3');
                outputDiv.html(test);
            },

            error: function ()
            {
                alert('Fail Test Get Dynamic');
            }
        });
    }
两次我都会出现以下错误:

无效的web服务调用,缺少参数值:\u0027firstName\u0027

  • 您的第一次尝试是将参数作为json字符串传递
  • 您的第二次尝试缺少
    =
    符号
您可以将对象传递给
数据
,jQuery将正确地序列化它

function testGetParametersDynamic2()
    {
        $.ajax(
        {
            post: 'GET',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            data: "firstName" + $('myFirstName').val() + "&lastName" + $('myLastName').val(),
            url: 'UtilitieService.asmx/TestGetParametersDynamic',
            success: function (result)
            {
                var test = result.d;
                var outputDiv = $('outputGET3');
                outputDiv.html(test);
            },

            error: function ()
            {
                alert('Fail Test Get Dynamic');
            }
        });
    }

我希望您为web方法使用
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
属性,或者在使用.NET 4.0的情况下在web.config中设置相同的信息

在我看来,你的第一次尝试几乎是正确的,但你应该更换

$.ajax(
        {
            post: 'GET',
            data: {
                firstName: $('myFirstName').val(),
                lastName: $('myLastName').val()
            },
...

data: '{"firstName":"' + $('#myFirstName').val() + '","lastName":' +
                    $('#myLastName').val() + '"}',
(在
$('#myLastName').val()
之前跳过了起始双引号)

我严格建议您不要对JSON使用手动序列化。例如,如果
$('.\myFirstName').val()
$('.\myLastName').val()
中的文本将包含''.'或'\'字符,则必须使用额外的反斜杠('\')对这些字符进行转义(请参阅)。您应该使用脚本json2.js中的
JSON.stringify
函数,而不是手动序列化,您可以从或下载该脚本。在最近的web浏览器中,该函数是本机实现的,如果发生,json2.js将使用本机实现

$.ajax
数据
参数可以重写如下:

data: '{"firstName":"' + $('#myFirstName').val() + '","lastName":"' +
                    $('#myLastName').val() + '"}',
或者在某些情况下,甚至

data: {
    firstName: JSON.stringify($('myFirstName').val()),
    lastName: JSON.stringify($('myLastName').val())
}
有关更多信息,请参阅,也可以参阅

已更新:抱歉,没有用法的正确版本
JSON。stringify
可能没有数据用法:

data: {
    firstName: function() { return JSON.stringify($('myFirstName').val()); },
    lastName: function() { return JSON.stringify($('myLastName').val()); }
}

我严格建议您始终只使用我上面描述的
JSON.stringify
版本。

使用JSON传递多个参数

url: 'UtilitieService.asmx/TestGetParametersDynamic?firstName=' +
     encodeURIComponent('"' + $('#myFirstName').val() + '"') +
     '&lastName=' + encodeURIComponent('"' + $('#myLastName').val() + '"')

注意:避免使用
GET
调用。请改用
POST
。另请参阅,
POST:'GET'
-我想您正在寻找
类型
选项,而不是
POST
(?)选项。@Scrum I更新了代码并收到了以下错误:无效的JSON原语:dan。dan是我在firstName字段中使用的名称。使用添加双引号的代码更新了代码。仍然收到相同的错误。这是firebug的语句?{“firstName”:“dan”,“lastName”:“mark”}。格式正确吗?@dan_vitch:为什么不使用带有
JSON.stringify
的版本?在这种情况下,您会得到正确的结果。
url: 'UtilitieService.asmx/TestGetParametersDynamic?firstName=' +
     encodeURIComponent('"' + $('#myFirstName').val() + '"') +
     '&lastName=' + encodeURIComponent('"' + $('#myLastName').val() + '"')
data: "{'RecomendeeName':'" + document.getElementById('txtSearch').value + 
                       "'," + "'tempdata':'" +"myvalue" + "'}",