2011-11-09 9 views
1

私はAJAXを呼び出すサイトを持っています。それは私が作ったオフィス(つまり、多くの人のコンピュータ、異なるシステムやブラウザで、私のものだけではない)で働いていて、1台の外部コンピュータ(オフィスから約10分住んでいる友人) 。しかし、AJAXは他のすべての外部のコンピュータで失敗します。私が家で試してみたり、私の別の友人が彼の家で試してみると、うまくいかない(私たちはオフィスから遠く離れている)。これは、jQueryを使用した非常に単純なAJAX呼び出しです。AJAXは地理的な場所に基づいて動作しますか?

$(destination).load(url); 

私はFirebugのコンソールでそれをチェックし、AJAX呼び出しがリストされている。この

を発見し、それが動作するとき、それが動作しない場合、それを除いてそれはdoesnのとき

GET (url) 200 OK 

としてそれは赤で、OKと152msの間に「X」のアイコンが表示されています。

PARAMS]タブ - それが動作するかどうか、同じであるかない

ヘッダー]タブ - それが動作するとき、「リクエストヘッダ」セクションを示しています

X-Requested-With XMLHttpRequest 
Cookie PHPSESSID=******* 

しかし、それは動作しない場合、これらの行は存在しませんが、代わりに 'Origin'の行があります(これにはメインサイトURLがあります)。

レスポンス/ HTMLタブ - 動作しないときは空です。

私が言ったように、私はブラウザ、コンピュータ、Mac、Pcなどをテストしました。オフィスではすべて動作しますが、遠くにはありません。どんな助けでも大歓迎です。

UPDATE

私は、コードを分離するためにテストページを作成しました。テストページが短時間で動作し、その後作業が中断されました(私を驚かせる)。だから、今私のコードにはエラーがあると思うが、ブラウザが動作したときにエラーが何とか見落とされる(テストはしないが、オリジナルはオフィスで動作する)。

テストページには「Worked!」が必要です。 'テスト'リンクがクリックされるとポップアップ表示されます。コードは次のとおりです。

<?php 
$call = $_GET['call']; 
echo $call; 
if($call == 'yes') //check for call 
{ 
    echo 'Worked!'; 
    exit(); 
} 
?> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript"> 
function callAjax(call){ 
var dest = "#result"; 
var url = "http://www.test/page/url.php"; 
var query = "?call="+call; //turn call into a query string 
url = url+query; //Add querystring to url 
$(dest).load(url); //make the call 
} 
</script> 

<!DOCTYPE html><html><head><title>Test</title></head> 
<body> 
<a href="javascript:callAjax('yes')">test</a> 
<div id="result"></div> 
</body> 
</html> 
+0

ロードしようとしているURLは何ですか? (秘密でない場合) – florian

+0

@florian私がロードしているページは、家からでも正常に動作します(AJAX呼び出しの代わりに直接移動すると動作します)。これは、いくつかのデータベース情報の簡単なリストです。私は問題がリクエストヘッダーにXMLHttpRequestが存在しないことと関係していると確信していますが、なぜそれが当てはまるのかわかりません。 – lcHatter

+0

'url'は' http:// www.example.com/page'、 '/ page'、または' page'のように見えますか? – icktoofay

答えて

0

問題は、URLの絶対パスを使用することです。アドレスバーに 'www'が含まれているかどうかはコードに関係します。したがって、アドレスバーに 'www'が表示されているページに移動してもコードURLにない場合(またはその逆の場合)は機能しません。

いくつかの人々のコンピュータではうまくいかなかったのは、ページにアクセスしたときにその人が「www」を入力せず、そのアドレスバーがコードURLと一致しなかったからです。

これを理解するために私を正しい道につけてくれたicktoofayに感謝します。

0

「バグ」をターゲットにする方法は次のとおりです。

  • (可能であれば)プロジェクトの脇にAjaxリクエストをテストします。期待どおりのコンテンツを読み込んで、動作するかどうかを確認する、プロジェクト内の独立した(新しくダウンロードしたjquery.jsファイル)ページを作成します。この場合、「バグ」はプロジェクト自体に関連しています。

  • 私は、URLがURLをロードしているホストと一致しない場合、ヘッダーにXmlHttpRequestがないことを知りました。 (たとえば、google.comページを読み込もうとするなど)。クロスドメインリクエストを行っていないことを確認してください。(それはあなたの友人ので働いているので、私はそうは思いません)

[極度1]は

  • 私はそれが(パブリックまたはではない)であるプロジェクトの種類を知っているが、私はありませんデータベースアクセスが特定のIPアドレスに限定されていたプロジェクトですでに作業していました。特定の地域のIPアドレスは似ているので、IPアドレスがあまりにも異なるため、家にではなくオフィスの近くに住んでいるため、友人の身元に問題はないかもしれません。

上記の提案のいずれかが問題の解決策になる可能性はありますが、おそらく助けになるかもしれません。

+0

私は自分のコードがダムダウンされたバージョンのテストページを作りました。提案していただきありがとうございます。私はそのIPアドレスの事をチェックします。 – lcHatter

関連する問題