2015-10-01 761 views
8

私のラップトップでローカルにホストされているサーバーにPOST ajaxリクエストを実行しようとしていますが、情報を取得できません。私は自分のサイト上のボタン(ローカルホスト)をクリックすると、私は、サーバーに正しい情報が戻って渡すが、フロントエンドで見ることができる私はこのエラーを取得する:NetworkError: 'XMLHttpRequest'で 'send'を実行できません

error: NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load ' http://comp-ip '.

var param = JSON.stringify({varA:"varA",varB:"varB"}); 

$.ajax({ 
    type: "POST", 
    url: "http://comp-ip", 
    async: false, 
    data: param, 
    success: function(result, status, xhr){ 
    alert(result + ": " + status); 
    }, 
    error: function(xhr, status, err) { 
    alert(status + ": " + err); 
    } 
}); 

それはすべてのエラーをトリガしているようです「成功」ではない。誰が何が間違っているか考えている?

編集:私はAJAXせずに、通常のPOSTリクエストを送信しようとしましたし、それは同様に私に「未定義」というエラーがスローされます:私が試した

$(document).ready(function(){ 
    var param = JSON.stringify({varA:"varA",varB:"varB"}); 
    $("#btn").click(function(event){ 
      $.post( 
       "http://ip", 
       param, 
       function(data) { 
       $('#container').html(data); 
       } 
      ).fail(function(error) { alert(error.responseJSON) }); 
     }); 
}); 

他のもの: 1)サファリにブラウザを変更します(同じこと、サーバーは情報を返しますが、サイトにはエラーが発生します) 2)async = trueをfalseから設定します。何らかの理由で私がそれをtrueに設定すると、サーバーはまったく応答しません。それが偽であれば、サーバーは応答します。

答えて

6

文字通り数分前にこの問題が発生しました。問題は、async:falseasync:trueに設定する必要があることです。私はHTML5がXMLよりも新しいので、これがなぜ機能するのか正確にはわかりません。

エラーは、このサイト上で少し異なっているが、私はそれが同様だと思う:JavaScript console.log causes error: "Synchronous XMLHttpRequest on the main thread is deprecated..."

更新

こんにちは、私はいくつかの新しい改良情報で戻ってきました。 Cross-Originはポートやドメイン/ IPで発生し、おそらく大部分のまともなブラウザで動作します。何が起こっているのか知りたい場合は、IPをlocalhostに変更するか、localhostを使用している場合はその逆に変更してみてください。この問題は、異なるポートを使用している場合にも発生する可能性があることに注意してください。迅速な修正を行うには、正しいアクセス制御ヘッダーresponse.addHeader("Access-Control-Allow-Origin", "*");を出しているバックエンドサーバーのヘッダーにあるヘッダーにあることを確認します。

コードがthis question

+1

こんにちは、お返事ありがとうございます。私はfalseからtrueにasyncを設定しようとしましたが、間違いなく私のサーバーは全く応答していません。私のサーバーが情報を返すasync = falseとは対照的です。 – Moo33

+0

未定義のエラーが表示されました。これは、postメソッドのURLが無効である可能性があることを意味します。サーバー上のjsファイルですか? – ytpillai

+0

ああ、リソースを読み込めませんでした。あなたは間違ったURLを持っています。どのようなタイプのサーバーを使用していますか? – ytpillai

5

から派生していることは、クロスオリジンリソースの問題(CORS)でした。私のサーバーは正しい情報を私に返していましたが、私のブラウザはそれを受け入れることを拒否しました。それを修正するために、私はレスポンスヘッダとして、それらを設定するために、私のJavaサーバ(ない私のサイト)上の2行を追加する必要がありました:

yourownvariable.setHeader("Access-Control-Allow-Origin:", "origin url of your site"); 
yourownvariable.setHeader("Access-Control-Allow-Methods", "GET, POST,PUT"); 
+0

喜んでそれを修正することができます – ytpillai

+0

このエラーが発生しました[ここ](http://stackoverflow.com/questions/20433655/no-access-control-allow-origin-header-is-present-on-the-requested-resource-または) – ytpillai

-3

あなたはこの

chrome.exe --allow-file-access-from-files 
のように、Windows上でChromeでウェブページをテストすることができます
関連する問題