2011-12-08 7 views
1
function changeTitle(title) 
{ 
document.title = title; 
} 

function result() 
{ 
    var fetchTitle; 
    fetchTitle = new ActiveXObject("Microsoft.XMLHTTP"); 
    fetchTitle.open("GET", "title.php", true); 
    fetchTitle.send(null); 
} 

setInterval('changeTitle(result())', 1000);//check every second for update 

title.phpはタイトルを変更していないようだjavascriptの

<?php echo "This is a new title"; ?> 

とページタイトルを変更します。 title.phpを表示するために何かが欠けていますか?

ありがとうございます。

+0

文字列を 'setInterval'(' eval'を使用)で使用しないで、関数を渡してみてください。 'setInterval(function(){changeTitle(result());}、1000);' –

答えて

3

私は

多くの事

  1. あなたchangeTitle関数は引数(文字列)を渡されることを期待し、あなたは常にそれをどの常に意志resultの戻り値を渡す何かが足りませんundefinedとしてresultにはreturnのステートメントがありません。
  2. あなたがデータを何もしないようにするには、onReadyStateChangeイベントハンドラを割り当てないのAjaxへのIE 6/7のActiveXアプローチの代わりに、近代的な、標準、クロスブラウザの互換性アプローチ
  3. を使用しているのXMLHttpRequestから返さオブジェクト
  4. あなたは非同期リクエストを行っていますが、アプローチは同期リクエストに基づいているように見えます。そのためにも失敗します(同期リクエストはページをロックするので避けてください)。

は、私はいくつかの問題がここにありますan introduction to XMLHttpRequest

0

読んで示唆しています。主に、より堅牢なAJAX実装を使用する必要があります。 JQueryなどのライブラリを使用することをお勧めします。そのような独自の実装をロールして、できるだけ多くのブラウザで信頼性と一貫性を確保してください。

第2に、結果関数は実際には応答から値を返すことはないため、changeTitle関数は実際のデータを受け取ることはありません。

関連する問題