一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

為什么jQuery.get、jQuery.getJSON、jQuery.post無法返回JSON

 修行的嘟嘟 2011-08-01

在WEB項目中,經常會使用到jQuery進行AJAX請求,但是自從使用了.net 3.5以后,以往寫的請求語句就有些小問題了,就是返回的始終是xml,而并不是JSON,經過嘗試,只需要在$.ajax中加入 contentType: "application/json; charset=utf-8"選項就可以了,這是因為在.net 3.5以后要對contentType進行檢查,所以僅僅指定dataType的話.net就不會返回JSON了,那么我們的請求自然也就無法請求到JSON數據了。正確寫法就是這樣了:

出錯代碼
 1 var url = "/Services/AccountService.asmx/UserExists";
2 var userName = $("#txtUserName").val();
3 $.ajax({
4 type: "POST",
5 url: url,
6 data: '{userName:"'+userName+'"}',
7 dataType: "json",
8 success: function (json) {
9 if (json.d == true) {
10 $("#submit").removeAttr("disabled");
11 return;
12 }
13
14 $("#submit").attr("disabled", "disabled");
15 }
16 });
更正后代碼
 1 var url = "/Services/AccountService.asmx/UserExists";
2 var userName = $("#txtUserName").val();
3 $.ajax({
4 type: "POST",
5 url: url,
6 data: '{userName:"'+userName+'"}',
7 dataType: "json",
8 contentType: "application/json; charset=utf-8",
9 success: function (json) {
10 if (json.d == true) {
11 $("#submit").removeAttr("disabled");
12 return;
13 }
14
15 $("#submit").attr("disabled", "disabled");
16 }
17 });

但是在使用$.get、$.getJSON、$.post時確怎么也得不到JSON數據了,寫法如下:

$.get代碼
 1 var url = "/Services/AccountService.asmx/UserExists";
2 var userName = $("#txtUserName").val();
3 $.get(
4 url
5 , { userName: userName }
6 , function (json) {
7 if (json.d == true) {
8 $("#submit").removeAttr("disabled");
9 return;
10 }
11
12 $("#submit").attr("disabled", "disabled");
13 },"json");
$.getJSON代碼
 1 var url = "/Services/AccountService.asmx/UserExists";
2 var userName = $("#txtUserName").val();
3 $.getJSON(
4 url
5 , { userName: userName }
6 , function (json) {
7 if (json.d == true) {
8 $("#submit").removeAttr("disabled");
9 return;
10 }
11
12 $("#submit").attr("disabled", "disabled");
13 });
$.post代碼
 1 var url = "/Services/AccountService.asmx/UserExists";
2 var userName = $("#txtUserName").val();
3 $.post(
4 url
5 , { userName: userName }
6 , function (json) {
7 if (json.d == true) {
8 $("#submit").removeAttr("disabled");
9 return;
10 }
11
12 $("#submit").attr("disabled", "disabled");
13 },'json');

用HttpWatch查看請求返回的數據如下:

顯示代碼
1 <?xml version="1.0" encoding="utf-8"?>
2 <boolean xmlns="http:///">false</boolean>

看一下jQuery.extend中有關代碼:

jQuery.extend
 1 jQuery.extend({
2
3 get: function( url, data, callback, type ) {
4 // shift arguments if data argument was omited
5 if ( jQuery.isFunction( data ) ) {
6 type = type || callback;
7 callback = data;
8 data = null;
9 }
10
11 return jQuery.ajax({
12 type: "GET",
13 url: url,
14 data: data,
15 success: callback,
16 dataType: type
17 });
18 },
19
20 getScript: function( url, callback ) {
21 return jQuery.get(url, null, callback, "script");
22 },
23
24 getJSON: function( url, data, callback ) {
25 return jQuery.get(url, data, callback, "json");
26 },
27
28 post: function( url, data, callback, type ) {
29 // shift arguments if data argument was omited
30 if ( jQuery.isFunction( data ) ) {
31 type = type || callback;
32 callback = data;
33 data = {};
34 }
35
36 return jQuery.ajax({
37 type: "POST",
38 url: url,
39 data: data,
40 success: callback,
41 dataType: type
42 });
43 }
44 });

原因就是.net 3.5以后要對contentType進行檢查,如果不為json的話,就不會返回json,而get、getJSON、post擴展都再次調用了ajax,但是只傳了dataType參數,.net 3.5在檢查contentType時發(fā)現(xiàn)其不是json,便返回了xml.

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产成人精品国产亚洲欧洲| 午夜午夜精品一区二区| 永久福利盒子日韩日韩| 中文文精品字幕一区二区| 最新国产欧美精品91| 免费久久一级欧美特大黄孕妇| 欧美午夜色视频国产精品 | 日韩特级黄色大片在线观看| 亚洲熟女少妇精品一区二区三区| 亚洲最新av在线观看| 狠狠干狠狠操亚洲综合| 欧美日韩亚洲精品内裤| 日本淫片一区二区三区| 黑丝袜美女老师的小逼逼| 国产精品超碰在线观看| 丰满的人妻一区二区三区| 黄片免费在线观看日韩| 91偷拍视频久久精品| 亚洲欧美日韩在线中文字幕| 在线免费看国产精品黄片| 麻豆最新出品国产精品| 日韩av欧美中文字幕| 国产日产欧美精品大秀| 丝袜诱惑一区二区三区| 一区二区三区国产日韩| 日本最新不卡免费一区二区| 九九热精彩视频在线播放| 五月婷婷六月丁香在线观看| 日本av一区二区不卡| 亚洲第一视频少妇人妻系列| 成年女人下边潮喷毛片免费| 国产精品日韩欧美一区二区| 久久综合日韩精品免费观看| 国产精品丝袜一二三区| 91麻豆精品欧美一区| 美日韩一区二区精品系列| 黄片免费播放一区二区| 国产精品夜色一区二区三区不卡| 色婷婷视频免费在线观看| 日韩日韩欧美国产精品| 九九热精品视频免费观看|