2011-09-08 3 views
0

私はこれを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); 
       } 
      }); 
     } 
}); 

答えて

2

あなたはおそらく、あなたのスクリプトをホストしているものとは異なるドメインにAJAX要求を送信してからあなたを禁じsame origin policy制限をヒットしています。このポリシーに違反していないことを確認する最良の方法は、あなたのAJAX呼び出しのための相対URLを使用することです:動作するように、このAJAX要求について

$.ajax({ 
    url: "/datafeeder/hello_world", 
    success: function(data) { 
     alert (data); 
    }, 
    error: function(request, status, error) { 
     alert(status + ' - ' + error); 
    } 
}); 

、このJavaScriptをホストしているHTMLページがhttp://www.band.dev:8888上でホストされている必要があります。

+0

オリジナルの背景がFlash開発であり、クロスドメインポリシーが非常に必要で共通していると私は考えました。しかしこれで、私はオートコンプリート入力用のhttp://jqueryui.com/demos/autocomplete/#remote-jsonpを見て、外部でホストされているスクリプトから引き出しています。これはJSONP形式のためですか? – Tim

+0

@Tim、JSONPが動作するためには、サーバーは '' hello world ''ではなくJSONPを返さなければなりません。 JSONPの外観は 'someCallback({value: 'hello world'})'のように見えるかもしれませんが、 'someCallback'の名前をリクエストパラメータとして渡すことでそれをパーソナライズすることができます。 –

+0

http://stackoverflow.com/questions/2887209/what-are-the-differences-between-json-and-jsonp/2887218#2887218これは違いを理解するのに役立ちます – Rafay

関連する問題