我想使用jquery调用php来在同一页面上显示数据。然而,如果我使用jquery来调用数据,我会一直得到"0结果",但当我使用提交按钮时,我会在.php窗口中得到正确的数据。。。感谢您的帮助!非常感谢。
哦,我在不同的文件中有三个脚本,但在html文件中链接了头部的jquery。提前感谢!
HTML
<form method="post" action="contract.php">
<fieldset>
<div class="wrap_21">
<fieldset id="accountnumber">
<input type="text" name="accountnumber" placeholder="Account Number" value="" required style="width:240px; height:24px"/>
</fieldset>
</div>
<div class="wrap_16">
<fieldset id="tradetype">
<span class="text_9">TRADE:</span>
<span class="text_11">
<input type="radio" name="tradetype" required value="Buy"/> Buy
<input type="radio" name="tradetype" value="Sell"/> Sell </span>
</fieldset>
<fieldset>
<span class="text_9">PRICE:</span>
<span class="text_11">
<input type="text" name="price" value="" required /></span>
</fieldset>
<fieldset>
<span class="text_9">DATE:</span>
<select name="date" id="date" onchange="showData(this.Value)">
<option value="">Select</option>
<option value="24 November 2015">24-Nov-15</option>
<option value="24 December 2015">24-Dec-15</option>
<option value="24 January 2015">24-Jan-15</option>
</select>
</fieldset>
<input type="submit" name="formSubmit" value="Submit">
</fieldset>
PHP
<?php
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: ". $conn->connect_error);
}
$tradetype=$_POST['tradetype'];
$price=$_POST['price'];
$date=$_POST['date'];
$sql = "SELECT * FROM Contracts WHERE Trade='$tradetype' AND ExpiryDate='$date'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
//output data of each row
while($row = $result->fetch_assoc()) {
echo "Premium: " . $row["Premium"]. " Discount: " . $row["Discount"] . "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
Jquery
function showData(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
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 (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","contract.php?q="+str,true);
xmlhttp.send();
}
这就是您的问题:showData(this.Value)
,在您的php中有3个post变量,您只发送了一个
试试这样的东西:
从所选中删除onchange="showData(this.Value)
$('select[name="date"]').on('change',function(e){
e.preventDefault();
var parent = $(this).parents('form');
$.ajax({url: "contract.php",
type:"POST",
data:{
'tradetype':parent.find('input[name="tradetype"]').val(),
'price':parent.find('input[name="price"]').val(),
'date':parent.find('option:selected').val()
},
success: function(result) {
$("#result").html(result);
}});
完整的html代码:-
<form method="get" id="formpge" action="">
<fieldset>
<div class="wrap_21">
<fieldset id="accountnumber">
<input type="text" name="accountnumber" id="accountnumber" placeholder="Account Number" value="" required style="width:240px; height:24px"/>
</fieldset>
</div>
<div class="wrap_16">
<fieldset id="tradetype">
<span class="text_9">TRADE:</span>
<span class="text_11">
<input type="radio" name="tradetype" id="tradetype" required value="Buy"/> Buy
<input type="radio" name="tradetype" id="tradetype" value="Sell"/> Sell </span>
</fieldset>
<fieldset>
<span class="text_9">PRICE:</span>
<span class="text_11">
<input type="text" name="price" id="price" value="" required /></span>
</fieldset>
<fieldset>
<span class="text_9">DATE:</span>
<select name="date" id="date" >
<option value="">Select</option>
<option value="24 November 2015">24-Nov-15</option>
<option value="24 December 2015">24-Dec-15</option>
<option value="24 January 2015">24-Jan-15</option>
</select>
</fieldset>
<input type="button" name="formSubmit" id="formSubmit" value="Submit">
<div id="result"></div>
</fieldset>
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$(document).ready(function(){ //newly added
$( "#date" ).change(function() {
event.preventDefault();
var data = $( "#formpge" ).serialize();
var url = 'contract.php?'+data;
$.get( , function( data ) {
$( "#result" ).html( data );
});
});
});
</script>
在php中将$_POST更改为$_GET;
您尚未通过
商品类型、价格、日期;请求中的参数
所以试试
function showData(str) {
var data={
tradetype :$('#tradetype').val(),
price:$('#price').val(),
date:$('#date').val()
};
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
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 (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","contract.php",true);
xmlhttp.send(data);
}
您可以在这里获得详细的教程-
http://www.a100websolutions.in/retrieve-data-using-jquery-php/
完整教程,演示如何在后台使用AJAX/JQuery和PHP从数据库中获取数据。此外,代码在里面,所以你也可以参考代码。