2014-07-17 28 views
0

我有一個在我的索引頁加載幾個JS腳本,包括一個JS腳本,其中包括我的AJAX功能關閉其它JS和PHP的東西

function ajaxrequest(php_file, purpose, var1, var2, var3, var4, var5, var6, var7, var8, where) { 
    var request = getXMLHTTP(); // call the function for the XMLHttpRequest instance 

    // create pairs index=value with data that must be sent to server 
    var the_data = 'purpose=' + purpose + '&var1=' + var1 + '&var2=' + var2 + '&var3=' + var3 + '&var4=' + var4 + '&var5=' + var5 + '&var6=' + var6 + '&var7=' + var7 + '&var8=' + var8; 

    request.open("POST", php_file, true); // set the request 

    // adds a header to tell the PHP script to recognize the data as is sent via POST 
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    request.send(the_data); // calls the send() method with datas as parameter 

    // Check request status 
    // If the response is received completely, will be transferred to the HTML tag with tagID 
    request.onreadystatechange = function() { 
     if (request.readyState == 4) { 
      document.getElementById(where).innerHTML = request.responseText; 
     } 
    }; 
} 

一切,包括在同一個文件中找到其他JS功能作爲上面的功能,正常工作,直到這個函數被調用。這個函數每次都有效,但是任何JS函數,PHP要求和session_start()都似乎'重置'並且需要重新加載。這是正常的,如果不是,請你協助糾正這個問題?

+0

你說一切正常,直到這就是所謂的,這聽起來像有此函數中的代碼中有錯誤。你確定沒有錯誤嗎?如果沒有錯誤,你究竟意味着什麼停止工作?需要更多信息來弄清楚你的期望和實際發生的情況。 – Busches

+0

Theres ajaxrequest後面的colorbox彈出窗口被觸發。 colorbox彈出窗口似乎失去了在index.php上加載的JS腳本。如果我運行colorbox彈出窗口而不運行ajaxrequest,它按預期工作。這就是爲什麼我懷疑它與ajaxrequest有關係 – AlbertaXChange

回答

0

如果您希望代碼影響在AJAX完成打印後創建的任何新元素,您需要在AJAX頁面加載後調用依賴頁面項目的函數。

我換一切,我有我的JS運行時,母親函數被調用,還挺像這樣的功能:

// In the beginning 
function init(){ 
    // Functions that need to be fired when any page loads 
    // etc etc 
    // Code goes here... 
}  

function ajaxrequest(php_file, purpose, var1, var2, var3, var4, var5, var6, var7, var8, where) { 
// ... 
    // Check request status 
    // If the response is received completely, will be transferred to the HTML tag with tagID 
    request.onreadystatechange = function() { 
     if (request.readyState == 4) { 
      document.getElementById(where).innerHTML = request.responseText; 
      init(); 
     } 
    }; 
} 
+0

此解決方案是否可以解決這個停止任何PHP需求的ajaxrequest和session_start()?當ajaxrequest運行時,它會執行請求。例如,打開ajaxprocess.php。 ajaxprocess.php中的第一行代碼必須是session_start();併爲ajaxprocess.php需要的每個文件做一個PHP需求,即使這些都是在index.php上完成的。因此我的困惑。 – AlbertaXChange

+0

當異步加載PHP文件時,它們將加載爲不依賴於當前頁面的單獨PHP文件。因此,如果有所有網頁需要的全局變量,則需要將它們包含在您嘗試使用AJAX加載的實際.php文件中。 –

+0

因此需要重啓session_start和PHP require? – AlbertaXChange