Dave Ward..
35
内容类型
您无需在调用MVC控制器操作时指定该内容类型.只有在调用ASP.NET AJAX"ScriptServices"和页面方法时才需要特殊的"application/json; charset = utf-8"内容类型.jQuery的默认contentType"application/x-www-form-urlencoded"适用于请求MVC控制器操作.
数据
你拥有的数据是正确的.通过传递jQuery一个JSON对象,它将在POST数据中被序列化为patientID = 1.这个标准形式是MVC对参数的期望.
当您使用ASP.NET AJAX服务时,您只需将参数括在引号中,如"{'patientID':1}".他们希望解析出代表JSON对象的单个字符串,而不是POST数据中的各个变量.
JSON
在这种特定情况下,这不是问题,但是养成在JSON对象中引用任何字符串键或值的习惯是个好主意.如果您无意中使用JavaScript保留关键字作为对象中的键或值,而不引用它,则会遇到令人困惑的调试问题.
相反,您不必引用数值或布尔值.直接在对象中使用它们总是安全的.
因此,假设您确实想要POST而不是GET,那么$ .ajax()调用可能如下所示:
$.ajax({
type: 'POST',
url: '/Services/GetPatient',
data: { 'patientID' : 1 },
dataType: 'json',
success: function(jsonData) {
alert(jsonData);
},
error: function() {
alert('Error loading PatientID=' + id);
}
});