2017-02-23 19 views
0

私のデータベースにクエリを実行し結果を返すphpファイルを呼び出しています。私はphpファイルが必要に応じてデータを正確に返すことを確認しましたが、私の呼び出しページはJavaScriptから更新されません。JavaScriptはデータを返しませんがエラーはありません

戻り値がページに返されるように、以下の構文で変更する必要があるものはありますか?

<script type="text/javascript"> 
function boostion() 
{ 
var xhr; 
if (window.XMLHttpRequest) { 
    xhr = new XMLHttpRequest(); 
} else if (window.ActiveXObject) { 
    xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
    xhr.open("GET", "QueryDB.php", true); 
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");     
    xhr.onreadystatechange = display_data; 
    function display_data() { 
    if (xhr.readyState == 4) { 
     if (xhr.status == 200) {  
     document.getElementById("data").innerHTML = xhr.responseText; 
     } else { 
     alert('There was a problem with the request.'); 
     } 
    } 
    } 
} 
</script> 

EDIT
私もChromeで開発者向けのオプションを開き、コンソールをチェックし、表示されたエラーや問題がないてきたが、すべてが成功です!

編集2
私は下のjQueryのアプローチを使用しようと、この構文を使用 - しかし、私はエラーを取得

Uncaught TypeError: $(...).load is not a function

構文:

<script src="https://code.jquery.com/jquery-3.1.1.slim.js" 
    integrity="sha256-5i/mQ300M779N2OVDrl16lbohwXNUdzL/R2aVUXyXWA=" 
    crossorigin="anonymous" type="text/javascript"></script> 
<script type="text/javascript"> 
$(window).load(function(){ 
$.get("QueryDB.php", function(data, status){ 
document.getElementById("data").innerHTML = data; 
}); 
}); 
</script> 

編集3
これは私が返す必要があるSQL構文とエコー結果を実行する私のPHP構文ですJavaScriptの

<?php 
    $option = array(); 

    $option['driver'] = 'mssql'; 
    $option['host']  = 'host'; 
    $option['user']  = 'user';  
    $option['password'] = 'password'; 
    $option['database'] = 'database';  
    $option['prefix'] = '';    

    $db = JDatabase::getInstance($option); 
    $result = $db->getQuery(true); 
    $result->select($db->quoteName(array('trackandfieldresults'))); 
    $result->from($db->quoteName('[TrackData]')); 
    $db->setQuery($result); 
    $row = $db->loadRowList(); 
    echo $row['0'] 
?> 
+0

私のデータベースとデータを返します。私はxhr.send()を見てみましょう –

答えて

0

使用xhr.send(); それはGET要求であれば、あなたはxhr.open中にクエリ文字列を適用する必要があり、あなたがContent-type:application/x-www-form-urlencoded

+0

を認識していない場合はjqueryのを使用しないでください –

+0

'send()'メソッドのほかに、より良い関数を外に置くことを忘れないでください。 –

+0

データの送信に 'xhr.send 'が必要です –

0

私はjQueryのを使用してより高速なアプローチを持って設定する必要がいけません。

$(window).load(function(){ 
    $.get("QueryDB.php", function(data, status){ 
    //Do whatever you want here 
    }); 
}); 

これはジョブを実行する必要があります。あなたのアプローチは古いものであり、デバッグするのが一種複雑です。

+0

* Emberassment * JQueryの使い方は分かりません。どうすればそれはあなたのコードに対応するでしょう – oakinyelure

0

試してみてください。この

function boostion(){ 
 
    var xhr; 
 
    if (window.XMLHttpRequest) { 
 
    xhr = new XMLHttpRequest(); 
 
    } 
 
    else if (window.ActiveXObject) { 
 
    xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
 
    } 
 
    xhr.open("GET", "QueryDB.php", true); 
 
    xhr.send(); 
 
    xhr.onreadystatechange = function(){ 
 
    console.log(xhr); 
 
    if (xhr.readyState == 4 && xhr.status==200) { 
 
     document.getElementById("data").innerHTML = xhr.responseText; 
 
    } 
 
    } 
 
    
 
}
<div id="data"></div> 
 
<button onclick="boostion();">Load</button>

私はボタンを押していますし、PHPが照会しているとしてそれはget要求であるあなたがそれ
+0

まだ何も返されません。私が見るのはreadyState:1、タイムアウト:0、withCredentials:false、アップロード:XMLHttpRequestUpload、responseURL: "" ... –

+0

すべての一番下にXMLHttpRequestがあり、オブジェクトをクリックします。スクリーンショットを取って追加してください。 –

+0

すべての一番下にあることを意味しますか?私はそれを見ない。コンソールに –

関連する問題