如何从jquery函数调用php函数

时间:2011-12-08 14:24:49

标签: php jquery

我正在尝试从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>&nbsp;</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工作时,这段代码非常有用。我希望在不刷新页面的情况下完成此操作。请问,我可以帮忙解决我在代码中出错的问题。谢谢。

2 个答案:

答案 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/