$.ajax({
url: 'http://intern-dev01:50231/api/language',
type: 'GET',
dataType: 'json',
success: function() {
console.log('It Works!');
},
error: function (request,status, error) {
console.log(error);
alert(status);
}
});
このajax呼び出しが機能しないのはなぜですか?ブラウザで呼び出すと、正常に動作します:/。
これはフィドラーが返すものです:
HTTP/1.1 200 OK
Content-Length: 122
Content-Type: application/json; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
Date: Fri, 26 Apr 2013 06:56:40 GMT
[{"LanguageId":1,"LanguageName":"Dansk"},{"LanguageId":2,"LanguageName":"Tysk"},{"LanguageId":3,"LanguageName":"Engelsk"}]
Ajax応答が有効かどうかを確認する必要があります。 ajaxで指定する場合:
dataType: 'json',
サーバーが200 OKを返しても、応答をJSONとして解析できない場合、jQueryはエラーイベントを発生させます。サーバーから返されたデータをチェックして、それが有効なJSONであることを確認してください(JSONLintサービスを試してください)。
返されたデータがJSONではないか、構文エラーがある場合は、サーバー側のコードで修正します。サーバー側スクリプトから{}を返すだけです。
これも試してみてください。
$.ajax({
url: 'http://intern-dev01:50231/api/language',
type: 'GET',
cache: false,
complete: function (xhr, status) {
if (status === 'error' || !xhr.responseText) {
console.log(error);
alert(status);
}
else {
console.log('It Works!');.
}
}
});
ステータスが200 OKを示しているため、解析エラーがあります。問題はdatatype:jsonにあります。これをテストするには、行を削除すると動作するはずです。これを修正するには、datatype:textに変更します。 同様の質問については、このリンクも参照してください
Urlパラメータを確認し、読み込まれたページと同じであることを確認してください。クロスドメインのajax呼び出しを行っている可能性があります。クロスドメインのajax呼び出しを行う場合は、クロスドメインのリクエストを行うことができるdataTypeが「script」と「jsonp」のみであることに注意してください。
URLがIPアドレスであり、ページがそのIPを指すドメイン名をロードした開発環境でこの問題に遭遇しました。
私は少し遅れていることを知っていますが、同じ問題に遭遇しただけで、これはGoogleのトップの検索結果の1つです。私は次のようにデータ型をurlの上に移動することでなんとか修正しました:
$.ajax({
type: 'GET',
dataType: 'json',
url: 'http://intern-dev01:50231/api/language',
success: function() {
console.log('It Works!');
},
error: function (request,status, error) {
console.log(error);
alert(status);
}
});
別のウェブアプリやウェブAPIアプリケーションでローカルにテストしている場合は、アプリケーションをデバッグし、APIがデータを正しく送信し、アプリがAJAXを介してAPIに呼び出し、データを返します。
アプリケーションを実行するとドメインが似ていないため、AJAX呼び出しは成功関数にヒットしません。ブラウザがCross Site request
。ローカルとデバッグの両方でアプリを公開すると、問題なく動作します。
これが誰かのお役に立てば幸いです。