我希望你使用[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
Web 方法的属性或在使用 .NET 4.0 的情况下在 web.config 中设置相同的信息。
在我看来,你的第一次尝试几乎是正确的,但你应该更换
data: '{"firstName":"' + $('#myFirstName').val() + '","lastName":' +
$('#myLastName').val() + '"}',
to the
data: '{"firstName":"' + $('#myFirstName').val() + '","lastName":"' +
$('#myLastName').val() + '"}',
(在之前跳过了起始双引号$('#myLastName').val()
).
我强烈建议您不要使用手动序列化为 JSON。例如,如果文本来自$('#myFirstName').val()
or $('#myLastName').val()
将包含 '"' 或 '\' 字符,这些字符必须使用额外的反斜杠 ('\') 进行转义(请参阅here http://www.json.org/)。您应该使用而不是手动序列化JSON.stringify
脚本 json2.js 中的函数,您可以从以下位置下载http://www.json.org/js.html http://www.json.org/js.html or here https://github.com/douglascrockford/JSON-js。在最近的网络浏览器中,该功能是本机实现的,并且 json2.js 如果发生则使用本机实现。
The data
的参数$.ajax
可以重写如下:
data: {
firstName: JSON.stringify($('myFirstName').val()),
lastName: JSON.stringify($('myLastName').val())
}
或者在某些情况下甚至作为
data: {
firstName: function() { return JSON.stringify($('myFirstName').val()); },
lastName: function() { return JSON.stringify($('myLastName').val()); }
}
欲了解更多信息,请参阅这个旧答案 https://stackoverflow.com/questions/2737525/how-do-i-build-a-json-object-to-send-to-an-ajax-webservice/2738086#2738086可能还有this https://stackoverflow.com/questions/2651091/jquery-ajax-call-to-httpget-webmethod-c-not-working/2656543#2656543.
UPDATED: 抱歉,正确的版本没有使用JSON.stringify
可能没有数据使用:
url: 'UtilitieService.asmx/TestGetParametersDynamic?firstName=' +
encodeURIComponent('"' + $('#myFirstName').val() + '"') +
'&lastName=' + encodeURIComponent('"' + $('#myLastName').val() + '"')
我强烈建议您始终只使用JSON.stringify
我上面描述的版本。