2011-07-18 85 views
0

HTML調用「ajax_request('server_code.php','result_id')」onClick。它未能在第一時間與此錯誤:iframe AJAX請求首次點擊失敗,此後完美地工作

*遺漏的類型錯誤:無法讀取空的ajax_request ajax.js財產「的innerHTML」:35(匿名函數)*

但每次後續調用完美的作品。爲什麼..?

這裏下載的所有文件:http://k.min.us/iejWmy.zip

HTML:

<html> 
<head> 
    <!-- ajax --> 
    <script src='ajax.js' type='text/javascript'></script> 
</head> 
    <body> 
     <a id='test' href='#' onclick="ajax_request('php.php','show_result')">get ajax data</a> 
     <div id='show_result'></div> 
    <body> 

</html> 

的Javascript 'ajax.js'

/**************************************************************************** 
Iframes based AJAX function. 
@ url - server side script location 
@ result_id - server side script output 
****************************************************************************/ 
function ajax_request(url,result_id) 
{ 
    var ajax_iframe_id = 'ajax_iframe_loader'; 
    var ajax_iframe = document.getElementById(ajax_iframe_id); 

    // create hidden iframe transfer buffer if it's not created already. 
    if (ajax_iframe == null) 
    { 

     var element = document.createElement("iframe"); 
     element.setAttribute('src',url); 
     element.setAttribute('id',ajax_iframe_id); 
     document.body.appendChild(element); 

     element.style.display='none'; 
     element.style.width='1'; 
     element.style.height='1'; 
     element.style.border='0'; 

     ajax_iframe = element; 
    } 

    // load server side page into iframe buffer 
    ajax_iframe.src = url; 

    // get the outputted result from inside our transfer div 
    var iframe_inner_doc = ajax_iframe.contentDocument || ajax_iframe.contentWindow.document; 

    // target AJAX data to transfer 
    var content_to_transfer = iframe_inner_doc.getElementById('to_transfer').innerHTML; 

    // paste result 
    document.getElementById(result_id).innerHTML = content_to_transfer; 
} 

PHP 'php.php'

<html> 
<body> 
<div id='to_transfer'>random number via ajax is:<font size='15'><?=mt_rand(5, 15);?></font></div> 
</body> 
</html> 

回答

0

我看到你設置了iframe src,但沒有AJAX調用。我懷疑你在嘗試訪問iframe的內容之前有任何內容。一旦你加載了一次內容,to_transfer存在,但不是第一次,因爲你沒有機會加載內部doc內容。

+0

欣賞回覆。我正在努力瞭解我需要遵循的事件順序才能使其工作。這是一個時間問題?在傳輸它之前是否應該等待服務器端腳本加載? – zed