2017-08-29 7 views
0

次の関数を使用して、onChange -Eventが発生するたびにMySQLデータベースからデータを取得するPHPへのajax呼び出しを行います。 PHPの結果は、いくつかのデータを含むJavaScript関数です。ajaxからjavascriptを実行

基本的に、すべてのコードをW3Schoolsからxmlhttp.send()にコピーしました。 私のページでJavaScriptを呼び出す問題に直面して、$.getScript(...)という部分を追加しました。

それは働いていますが、私はgetRun.php?run=...を呼び出すことが2回は最善の方法ではないと感じています。

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. を実行する機能がお使いのPHPのバックエンドにあなたのAjaxリクエストを起動し
  3. 定義します。
  4. PHPバックエンドは特定の結果を返します。stringまたはJSONまでです。
  5. 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

関連する問題