当前位置:  开发笔记 > 编程语言 > 正文

jQuery中$ .getJSON()和$ .ajax()之间的区别

如何解决《jQuery中$.getJSON()和$.ajax()之间的区别》经验,为你挑选了4个好方法。

我正在调用ASP.NET MVC操作

public JsonResult GetPatient(string patientID)
{
...

来自JavaScript使用jQuery.以下呼叫有效

$.getJSON(
'/Services/GetPatient',
{ patientID: "1" },
function(jsonData) {
  alert(jsonData);
});

而这一个则没有.

$.ajax({
  type: 'POST',
  url: '/Services/GetPatient',
  data: { patientID: "1" },
  contentType: 'application/json; charset=utf-8',
  dataType: 'json',
  success: function(jsonData) {
    alert(jsonData);
  },
  error: function() {
    alert('Error loading PatientID=' + id);
  }
});

两者都达到了action方法,但是对于$ .ajax调用,patientID值为null.我想使用$ .ajax调用来进行一些高级回调.

任何想法都赞赏.



1> Dave Ward..:

内容类型

您无需在调用MVC控制器操作时指定该内容类型.只有在调用ASP.NET AJAX"ScriptServices"和页面方法时才需要特殊的"application/json; charset = utf-8"内容类型.jQuery的默认contentType"application/x-www-form-urlencoded"适用于请求MVC控制器操作.

有关该内容类型的更多信息,请参阅: JSON Hijacking以及ASP.NET AJAX 1.0如何避免这些攻击

数据

你拥有的数据正确的.通过传递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);
  }
});



2> redsquare..:

.getJson只是.ajax的一个包装器,但它提供了一个更简单的方法签名,因为一些设置是默认的,例如dataType到json,类型得到等等

NB .load,.get和.post也是围绕.ajax方法的简单包装器.



3> rpcutts..:

更换

data: { patientID: "1" },

data: "{ 'patientID': '1' }",

进一步阅读:在ASP.NET中使用jQuery时要避免3个错误


这不一定是数据:'{patientID:"1"}',以避免嵌套的双引号?

4> 小智..:

在jquery的一些函数中存在很多混淆,比如$ .ajax,$.get,$ .post,$ .getScript,$ .getJSON,它们之间的区别是哪个是最好的,哪个是快的,哪个是使用时,以下是对它们的描述,使它们清楚,并摆脱这种类型的混淆.

$ .gettJSON()函数是一个简写的Ajax函数(内部使用带有数据类型脚本的$ .get()),它相当于下面的表达式,使用一些有限的条件,比如Request类型是GET,数据类型是json.

阅读更多.. jquery-post-vs-get-vs-ajax

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有