Php 在应用程序中实现ajax示例
我在W3C网站上实现ajax示例时遇到困难。该示例从数据库中提取结果,并根据从下拉菜单中选择的选项将其显示在表中 我已尝试配置此示例以满足我的需求。这是基于所选选项更新数据库中的字段。我想我很接近了,我只是想确保我在正确的轨道上。当选择一个选项时,将进行一个ajax调用,该调用将触发我的php脚本进行更改。看起来是这样的:Php 在应用程序中实现ajax示例,php,jquery,sql,database,forms,Php,Jquery,Sql,Database,Forms,我在W3C网站上实现ajax示例时遇到困难。该示例从数据库中提取结果,并根据从下拉菜单中选择的选项将其显示在表中 我已尝试配置此示例以满足我的需求。这是基于所选选项更新数据库中的字段。我想我很接近了,我只是想确保我在正确的轨道上。当选择一个选项时,将进行一个ajax调用,该调用将触发我的php脚本进行更改。看起来是这样的: <?php $q = mysql_real_escape_string($_POST['q']); print_r($_GET["q"]); $con = mys
<?php
$q = mysql_real_escape_string($_POST['q']);
print_r($_GET["q"]);
$con = mysql_connect('localhost', '', '');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("Orders", $con);
$sql= "UPDATE Orders SET status='.$_POST[q]['.$i.'].' WHERE ID='.$_POST[order_no] ['.$i.'].'";
echo '<select name="order_status[]" id="id" onchange="showUser(this.value)">';
echo '<option value = "Pending" name="order_status['.$i.']" class = "pending"' . ($row['status'] == 'Pending' ? ' selected=selected' : '') . '>Pending</option>';
echo '<option value = "Approved" name="order_status['.$i.']" class = "approved"' . ($row['status'] == 'Approved' ? ' selected=selected' : '') . '>Approved</option>';
echo '<option value = "Disapproved" name="order_status['.$i.']" class ="disapproved"' . ($row['status'] == 'Disapproved' ? ' selected=selected' : '') . '>Disapproved</option>';
从您的描述中,我不能确切地确定您的问题是什么,但是从查看您的代码来看,您的SQL语句中有一些语法错误
$sql= "UPDATE Orders SET status='.$_POST[q]['.$i.'].' WHERE ID='.$_POST[order_no] ['.$i.'].'";
应该是
$sql= 'UPDATE Orders SET status="' . $_POST['q'][$i] . '" WHERE ID="' . $_POST['order_no'][$i] . '"';
另外,代码中不清楚$i变量来自何处,在SQL语句中使用它之前,也没有对$\u POST['order\u no']进行任何验证,这将使您容易受到SQL注入的影响
这个ajax示例也是一种非常古老的做事方式。我将始终包含jQuery库,并在其中使用jQuery.ajax()函数,它将为您完成所有跨浏览器的工作。它还使从DOM元素中选择数据并将其解析为$\u POST或$\u GET变得非常容易。然后,通过使用回调函数,您可以继续使用php脚本的结果
$('select.foo').change(function() {
var post = {
status: $('select.foo option:selected').val(); // get the value from a dropdown
}
$.ajax({
type: "POST",
url: "some.php",
data: post,
success: function(returnData){
if(returnData == 1){
alert('updated');
}
}
});
});
w3schools不是W3C网站,也不是W3C(附属/认可)网站!W3Schools也很糟糕-你在代码中有一个,并且使用了一个我不会回答的,因为它是关于一个w3school代码示例的!嗨,提奥,谢谢你的回复。我在回显表之前声明$I变量,如:$I=0//在表中循环,给每行一个$i的值,然后递增$i++,我将研究这个方法,我以前没有这样做过。谢谢,很高兴我能帮忙。我仍然不确定您试图用代码实现什么。但是使用jQuery并验证所有php$\u POST和$\u GET VAR将使您的代码更安全、更容易,谢谢您的帮助。基本上,当用户更改“选择”框中的选项时,数据库查询将运行并更新数据库中受影响的行。好的,您要做的是将jQuery添加到“选择”框中。然后使用.val()函数获取选择框的值,然后通过.ajax()函数将其解析为php脚本。然后用php验证信息并更新数据库。对不起,我是说.change()而不是.click(),我已经编辑了上面的js代码
$('select.foo').change(function() {
var post = {
status: $('select.foo option:selected').val(); // get the value from a dropdown
}
$.ajax({
type: "POST",
url: "some.php",
data: post,
success: function(returnData){
if(returnData == 1){
alert('updated');
}
}
});
});