我正在调用查询数据库并返回结果的php文件。我已经验证php文件会根据需要准确地返回数据,但我的调用页面不会从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>
修改
我还在Chrome中打开了开发者选项并检查了控制台,没有显示错误或问题,一切都很成功!
编辑2
我尝试使用下面的JQuery方法并使用了这种语法 - 但是我得到了错误
未捕获的TypeError:$(...)。load不是函数
语法:
<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
这是我的php语法,它运行我希望从javascript返回的sql语法和echo结果
<?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 :(得分:0)
使用xhr.send();
如果是GET
请求,您必须在xhr.open
中应用查询字符串,而不必设置Content-type:application/x-www-form-urlencoded
答案 1 :(得分:0)
我使用JQuery的方法更快。
$(window).load(function(){
$.get("QueryDB.php", function(data, status){
//Do whatever you want here
});
});
这应该做的工作。你的方法陈旧,调试很复杂
答案 2 :(得分:0)
首先,脚本应该在结束体标记之前的HTML内部。然后你打开另一个文件并在其中编写代码。 JQUERY没有脚本标记。您正在为脚本创建外部JavaScript文件。无需脚本标记。现在使用这种格式。
$(window).on('load', function(e){
e.preventDefault();
var dat = //the content you are trying to load
$.get('middleware.php', dat, function(data){
$('#selector').html(data)
});
})
答案 3 :(得分: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;
}
}
}
&#13;
<div id="data"></div>
<button onclick="boostion();">Load</button>
&#13;