C# 从jquery ajax GET向.asmx传递多个参数
html 我尝试了多种输入数据的方法,我认为这就是问题所在 尝试1C# 从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
[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" + "'}",