我正在尝试从jquery函数调用php函数来计算一些值并将它们存储在会话中并列出会话中存储的值。我在鼠标单击事件上从html表单传递值到jquery函数。而我正在使用停止代码来实现这一目标。
这是一个php文件名totalprice.php中的HTML表单代码:
<table width="100%" >
<tr>
<td >type</td>
<td><select name="costtype" id="costype">
<option>one time</option>\n<option>multi</option>\n
</select></td></tr>
<tr>
<td align="right">destination </td>
<td> <select name="destination" id ="destination"><option>Lagos</option>\n<option>Oyo</option>\n<option>Kano</option>\n<option>Rivers</option>\n<option>Edo</option>\n<option>Ogun</option>\n<option>Kaduna</option>\n<option>Plateau</option>\n<option>Anambra</option>\n<option>Delta</option></select></td>
</tr>
<tr>
<td align="right">Total eight (Kg) </td>
<td><input type="text" size="10" name="weight" id="weight"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Submit" onclick="javascript:calculate()" name="caliculate" class="button"></td>
</tr>
</tbody></table>
<div id="testtable">cal value will be displayed here.</div>
</form>
这是jquery函数
function calculate() {
var costtype = $("#costype").val();
var destination = $("#destination").val();
var totalweight = $("#weight").val();
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==0)
{
document.getElementById("testtable").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","caltest.php?item="+escape(costtype)+"&totalweight="+escape(totalweight)+"&destination"+escape(destination),true);
xmlhttp.send();
}
这是caltest.php文件,我正在进行计算并显示会话数据使用表格
$itemtype = urldecode($_POST['item']);
$destination = urldecode($_POST['destination']);
$totalweight = urldecode($_POST['totalweight']);
$sql = "select price from prices_list where lower(costtype)='".strtolower($itemtype )."' ";
$price=0;
$Result = mysql_query($sql) ;
while ($row = mysql_fetch_array( $Result))
{
$price = (isset($row['price'])) ? $row['price'] : "";
}
$price = round($price,2);
$costcharges = $price*$totalweight;
$costtcharges = round($costcharges,2);
这里我正在做一些将数据存储到会话中的代码
$ fee_details = $ test_fee-&GT; storetestfee($项目类型,$总权重,$目的地,$ costcharges);
echo "<table width='75%' >
<tbody><tr>
<th width='2%' class='highlight'><b>#</b></th>
<th width='30%' class='highlight'><b>Item </b></th>
<th width='23%' class='highlight'><b>Destination</b></th>
<th width='5%' class='highlight'><b>weight (Kg) </b></th>
<th width='10%' class='highlight'><b>cost Charge</b></th>
</tr>";
if(count($fee_details)>0)
{$i=0;
foreach($fee_details as $key=>$test_price)
{$i++;
echo " <tr> ";
echo "<td>".$i."</td>";
echo "<td>".$test_price['item_type']."</td>";
echo "<td>".$test_price['destination']."</td>";
echo "<td>".$test_price['totalweight']."</td>";
echo "<td>".$courier_details['weightcharges']."</td>";
echo " </tr> ";
}}
echo "</tbody>
</table>";
当我直接使用jquery工作时,这段代码非常有用。我希望在不刷新页面的情况下完成此操作。请问,我可以帮忙解决我在代码中出错的问题。谢谢。
答案 0 :(得分:1)
首先关闭所有,你在使用jquery时不必使用xmlhttp=new XMLHttpRequest();
,jquery有一个函数可以做到这一点,只需使用load,post或ajax,也许这个可以帮到你
$(function(){
$("input[type=submit]").click(function(){
var costtype = $("#costype").val();
var destination = $("#destination").val();
var totalweight = $("#weight").val();
$.ajax({
type :'POST',
url :"caltest.php?item="+escape(costtype)+"&totalweight="+escape(totalweight)+"&destination"+escape(destination),
success :function(result){
//action where request complete, result come from server
}
});
)};
});
答案 1 :(得分:0)
如果你想使用jQuery,那么看看jQuery Ajax功能,我想这应该可以解决你的问题:http://api.jquery.com/jQuery.ajax/