2009-12-14 48 views
2

我有一个HTML表单,它使用下拉列表中的选择来填充mySQL表,但使用jQuery/AJAX调用外部php文件来更新在原始表单下方输入的行。如何使用jQuery/Ajax和PHP检索HTML和变量

表单的目的是一个订单输入系统,因此工作原理:选择一个项目,将其添加到列表中。我有的问题是,以及显示输入的项目,我想显示总订单值更新。我认为我可以使用PHP会话变量,但这似乎不起作用,除非原始页面被刷新。

因此,我的问题是:有没有办法从我的外部php文件中获取会话变量(或任何其他类型的变量)以及我附加到显示页面的HTML?

如果有帮助,这是我使用调用外部PHP添加新行时代码:

$.ajax({ 
type: "POST", 
url: "ajaxInsertOrderLine.php", 
data: dataString, 
cache: false, 
success: function(html){ 
    $("#orderItems").append(html); 
    document.getElementById('inputStockNo').value=''; 
    document.getElementById('qty').value=''; 
    document.getElementById('totalAmount').value="<?php echo $_SESSION["totalValue"]; ?>"; 
}}); 

其中“ajaxInsertOrderLine.php”是外部文件,“inputStockNo”和' qty'是两个表单变量被发送到脚本并在插入成功后归零。

+0

你在你的例子中混合你的语法,document.getElementById('qty')可能/应该是('#qty') – robjmills

+0

感谢您的提示;我一直这样写。但是,在Google上快速查看“getElementById”,但第一页上没有使用#的结果。 – AndrewDFrazier

回答

2

您可以返回一个Json对象(可能使用getJSON),其中包含要检索的两个不同变量,一个是要追加的html,另一个是总订单值。

4

您可以以数组的形式将许多值传回给您的jQuery脚本。举例来说,我可以通过以下:

session_start(); // necessary for getting/setting SESSION data 
print json_encode(array(
    "username" => $_SESSION["username"], 
    "msgCount" => 0, 
    "userHTML" => "<p>There are no new messages</p>"; 
)); 
从jQuery代码

然后,你将使用数据检索的JSON方法:

$.post("page.php", {}, function(results) { 
    alert(results.username + " has " + results.msgCount + " messages."); 
    $("messages").append(results.userHTML); 
}, "json"); 
2

为什么不直接取消会话变量的想法 - 在php页面上执行服务器上的总订单价值计算,并将值与您要添加到列表中的项目一起发送回去?

+0

我可以做到这一点;当我返回一个HTML表格行时,我可以将它包含在行尾的表格单元格中。问题是,我在每行的旁边都有一个总计运行总数,当我只希望总共有一个显示在页面上的某个地方时,会随着新行的添加而更新。 我已经在服务器上进行计算了;我只是无法弄清楚如何以我可以使用的方式将结果返回到原始页面。 – AndrewDFrazier