私はこれを6時間見つめています。わかりません。jquery.ajax()が成功またはエラーを発生させないのはなぜですか?
$.ajax({
url: "http://www.band.dev:8888/datafeeder/hello_world",
success: function(data) {
alert (data);
},
error: function(request, status, error) {
alert(status + ' - ' + error);
}
});
私はMAMPをローカルで実行していますが、私が直接URLをヒットしたとき、「hello world」にエコーしても問題ありません。これを実行すると、「エラー - 」というダイアログボックスが表示されます。私は、データ型を追加しようとしました: 'html'、そこに助けはありません。思考?
- 編集 -
これは私の実際の問題です。私がこれを実行すると、成功もエラーも発生せず、URLを直接ヒットしたときにJSONが正しいことがわかります。 (ところで、相対URLの修正は、上記のコードビットのために働いていた。)
$("#member_type").autocomplete({
source: function(request, response) {
$.ajax({
url: "/datafeeder/get_member_types/json",
dataType: "jsonp",
data: {
//maxNum: 12,
searchString: request.term
},
search: function(event, ui) {
alert('searching');
},
success: function(data) {
alert (data);
response($.map(data, function(item) {
return {
label: item.type,
value: item.id
}
}));
},
error: function(request, status, error) {
alert (status + ' - ' + error);
}
});
}
});
オリジナルの背景がFlash開発であり、クロスドメインポリシーが非常に必要で共通していると私は考えました。しかしこれで、私はオートコンプリート入力用のhttp://jqueryui.com/demos/autocomplete/#remote-jsonpを見て、外部でホストされているスクリプトから引き出しています。これはJSONP形式のためですか? – Tim
@Tim、JSONPが動作するためには、サーバーは '' hello world ''ではなくJSONPを返さなければなりません。 JSONPの外観は 'someCallback({value: 'hello world'})'のように見えるかもしれませんが、 'someCallback'の名前をリクエストパラメータとして渡すことでそれをパーソナライズすることができます。 –
http://stackoverflow.com/questions/2887209/what-are-the-differences-between-json-and-jsonp/2887218#2887218これは違いを理解するのに役立ちます – Rafay