2017-08-29 85 views
0

我使用以下函數對發生onChange-事件時從MySQL數據庫檢索數據的PHP進行ajax調用。 PHP的結果是包含一些數據的JavaScript函數。從ajax運行javascript

基本上,我將所有的代碼複製到W3Schools的xmlhttp.send()。 然後,面對在我的頁面上調用JavaScript的問題,我添加了與$.getScript(...)的部分。

它的工作原理,但我有一種感覺,撥打getRun.php?run=...兩次不能是最好的方式。

function getRun(str) { 
if (str == "") { 
    document.getElementById("txtHint").innerHTML = ""; 
    return; 
} else { 
    if (window.XMLHttpRequest) { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else { 
     // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange = function() { 
     if (this.readyState == 4 && this.status == 200) { 
      document.getElementById("txtHint").innerHTML = this.responseText; 
     } 
    }; 
    xmlhttp.open("GET","getRun.php?run="+str,true); 
    xmlhttp.send(); 
    $.getScript("getRun.php?run="+str, function() { 
     setTimeout(); 
    }); 
} 

}

你有什麼會是一個更好的辦法任何提示?

+0

而不是通過PHP在你的Ajax請求返回整個JavaScript函數,爲什麼不包括在你的腳本功能,運行Ajax請求,只返回你所需要的數據並傳遞給函數? – Milanzor

回答

0

爲了進一步說明對你的問題我的評論:

  1. 定義你想從你的Ajax結果運行
  2. 啓動您的Ajax請求到PHP後臺的功能。
  3. PHP後端返回某個結果,不管是string還是JSON,都由您決定。
  4. 在Ajax成功(或錯誤或完全偶數)回調中調用該函數。

例如,

function getDataFromBackend(){ 

    // Your Ajax request 
    // Seeing as you tried to use $.getScript, you might be using jQuery, so an example with jQuery 
    $.ajax({ 
     method: 'POST', 
     url: 'yoururl.php', 
     data: {}, // You can put whatever data you wanna send in this object 
     success: runMeWithData // The success callback runs the function when the Ajax request comes back without errors. 
    }); 

} 

function runMeWithData(dataFromAjax){ 
    console.log(dataFromAjax); // Show the output of your backend in the Console 
} 
+0

這聽起來很合理,謝謝。只需要弄清確切的代碼,但是你引導了我一個好方法。 – heckerf