시도한 후에는 $.ajax에 contentType: "application/json; charset=utf-8" 옵션만 추가하면 됩니다. 이는 .net 3.5 이후에 contentType을 확인해야 하므로 dataType만 지정하는 경우입니다. net JSON은 반환되지 않으므로 요청은 자연스럽게 JSON 데이터를 요청할 수 없게 됩니다. 올바른 작성 방법은 다음과 같습니다.
var url = "/Services /AccountService.asmx/UserExists";
var userName = $("#txtUserName").val()
$.ajax({
유형: "POST",
url: url,
data: '{userName:"' userName '"}',
dataType: "json",
success: function (json) {
if (json. d == true) {
$("#submit").removeAttr("disabled");
return;
}
$("#submit").attr("disabled", "비활성화됨");
}
});
수정된 코드
var url = "/Services/AccountService.asmx/UserExists"
var userName = $("#txtUserName").val(); 🎜>$.ajax({
type: "POST",
url: url,
data: '{userName:"' userName '"}',
dataType: "json",
contentType: "application/json; charset=utf-8",
성공: function (json) {
if (json.d == true) {
$("#submit"). RemoveAttr("disabled");
return
}
$("#submit").attr("disabled", "disabled")
}
그런데 $.get, $.getJSON, $.post를 사용할 경우 JSON 데이터를 가져올 수 없습니다. 작성 방법은 다음과 같습니다.
$.get 코드
var url = "/Services/AccountService.asmx/UserExists"; >var userName = $("#txtUserName").val ();
$.get(
url
, { userName: userName }
, function (json) {
if ( json.d == true) {
$( "#submit").removeAttr("disabled");
return;
}
$("#submit").attr("disabled ", "disabled");
}," json");
$.getJSON 코드
코드 복사
코드는 다음과 같습니다. var url = "/Services/AccountService.asmx/UserExists"
var userName = $("#txtUserName").val ();
$.getJSON(
url
, { userName: userName }
, function (json) {
if (json.d == true) {
$( "#submit").removeAttr("disabled");
return;
}
$("#submit").attr("disabled", "disabled")
});
$.post 코드
코드 복사
코드는 다음과 같습니다. var url = "/Services/AccountService.asmx/UserExists";
var userName = $("#txtUserName").val()
$.post(
url
, { userName: userName }
, function (json) {
if (json.d == true) {
$("#submit").removeAttr("disabled")
return ;
}
$("#submit").attr(" 비활성화됨", "disabled")
},'json')
보기 요청에 의해 반환된 데이터는 다음과 같습니다.
false jQuery.extend에서 해당 코드를 보세요:
jQuery.extend
코드 복사
코드는 다음과 같습니다. :
jQuery.extend({
get: function( url, data, callback, type ) {
// data 인수가 생략된 경우 인수 이동
if ( jQuery.isFunction( data ) ) {
유형 = 유형 || 콜백;
데이터 = null
}
return jQuery.ajax({
유형: "GET",
url: url,
data: 데이터,
success: callback,
dataType: type
})
},
getScript: function( url, callback ) {
return jQuery.get(url, null, callback, "script");
},
getJSON: function( url, data, callback ) {
return jQuery.get(url, data, callback, "json");
},
post: function( url, data, callback, type ) {
// data 인수가 생략된 경우 인수 이동
if ( jQuery.isFunction( data ) ) {
유형 = 유형 || 콜백;
데이터 = {}
}
return jQuery.ajax({
유형: "POST",
url: url,
데이터: 데이터,
성공: 콜백,
dataType: 유형
})
}
});
原因就是.net 3.5以后要对contentType进行检查,如果不为json的话,就不会返回json,而get、getJSON、post扩近以后要对contentType进行检查,但是只传了dataType参数,.net 3.5는 contentType时发现其不是json,便返回了xml에서 제공됩니다.