我刚刚编写了第一个Ajax请求,但它不起作用。当选择下拉列表中的新值时,需要更新。
这是我的javascript代码:
$(document).ready(function() {
function ajaxLoaded(response) {
$('#performanceResults').html(response);
}
function doRequest() {
$.ajax({
url: "results.php",
type: 'POST',
success: ajaxLoaded
});
}
$('#performance').change(doRequest);
});
这就是我检索q部分(不起作用)的方法:
public function getResults() {
$intCase = intval ( $_POST ['q'] );
var_dump ( $intCase );
if ($intCase == 1 or $intCase == 2 ) {
if ($intCase == 1) {
$strSql = 'select bidder_id, won, lost, fillrate, costs, cost_auction from result_bidder where tagload = ( select max(tagload) from result_bidder) order by cost_auction asc limit 1';
}
if ($intCase == 2) {
$strSql = 'select bidder_id, won, lost, fillrate, costs, cost_auction from result_bidder where tagload = ( select max( tagload ) from result_bidder ) order by fillrate asc limit 1';
}
$arrBestPerformer = $objDatabase->queryresult ( $strSql );
echo "<table border='1'>
<tr>
<th>bidder_id</th>
<th>won</th>
<th>lost</th>
<th>fillrate</th>
<th>costs</th>
<th>cost_auction</th>
</tr>";
while ( $row = mysqli_fetch_array ( $arrBestPerformer ) ) {
echo "<tr>";
echo "<td>" . $row ['bidder_id'] . "</td>";
echo "<td>" . $row ['won'] . "</td>";
echo "<td>" . $row ['lost'] . "</td>";
echo "<td>" . $row ['fillrate'] . "</td>";
echo "<td>" . $row ['costs'] . "</td>";
echo "<td>" . $row ['cost_auction'] . "</td>";
echo "</tr>";
}
echo "</table>";
}
}
我的表格: 公共函数SelectPerformanceIndicator(){
$this->getResults ();
$str = '<form >';
$str .= 'Select your performance indicator<br>';
$str .= '<select id = "performance">';
$str .= '<option value = "">Select Performance Indicator</option>';
$str .= '<option value = "1">Cost per auction </option>';
$str .= '<option value = "2">Fillrate </option>';
$str .= '</select>';
$str .= '</form>';
$str .= '<br>';
$str .= '<div id="performanceResults">';
return $str;
}
答案 0 :(得分:0)
您的问题是您的POST数据字符串无效。
xmlhttp.send("q ="+ str);
应该是
xmlhttp.send("q="+ str);
没有q
和=
之间的空格。
你错过了发送标题告诉PHP它应该将随请求发送的数据映射到$_POST
var。
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
所以你的正确功能是:
function showUser(str) {
if (str=="") {
document.getElementById("performance").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("performance").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","results.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("q="+ str);
}
但请再次:使用jQuery制作AJAX requests。如果你使用jQuery,你不必再为这样的错误而烦恼。
答案 1 :(得分:0)
您在查询字符串中添加了空格,"q ="
这在q
变量中的行为不是$_POST
,
删除key
和=
xmlhttp.send("q ="+ str);
到
xmlhttp.send("q="+ str);
更新答案:当请求有POST
标头时,AJax Content-type: application/x-www-form-urlencoded
将会正常工作。
请在send
方法
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
OR
您可以通过GET
方法发送请求,无需标题