PHP MySQL jQuery/AJAX问题
我对jQuery有问题 这是我的jQuery代码:PHP MySQL jQuery/AJAX问题,php,javascript,jquery,mysql,ajax,Php,Javascript,Jquery,Mysql,Ajax,我对jQuery有问题 这是我的jQuery代码: function UpdateRecord(id) { jQuery.ajax({ type: "GET", url: "index.php", data: 'id='+id, cache: true, success: function(data) { $('#output').html(data); }
function UpdateRecord(id)
{
jQuery.ajax({
type: "GET",
url: "index.php",
data: 'id='+id,
cache: true,
success: function(data)
{
$('#output').html(data);
}
});
}
UpdateRecord(id)从此处获取数据:
echo"<select>";
foreach($products->fetch_products($id) as $product)
{
$price = $product->price;
echo"<option value = $product->id onclick=\"UpdateRecord($product->id)\">$product->p_name</option>";
}
echo"</select>";
我测试了我的PHP函数,它工作正常
问题是,当我点击我的DropdOn列表并选择product时,整个表
在“价格
”字段中重复aggain,如下所示:
正常:
function UpdateRecord(id)
{
jQuery.ajax({
type: "GET",
url: "index.php",
data: 'id='+id,
cache: true,
success: function(data)
{
$('#output').html(data);
}
});
}
问题:
编辑
这是表
:
<tbody>
<?php
foreach($category->fetch_category() as $data){
$id = $data->id;
echo"<tr>";
echo"<td>";
echo"<center>";
echo"<input type=\"hidden\" value=\"$data->id\" />";
echo"<p><strong>".$data->cat_name."</strong></p>";
echo"</center>";
echo"</td>";
echo"<td>";
echo"<center>";
echo"<select>";
foreach($products->fetch_products($id) as $product)
{
$price = $product->price;
echo"<option value = $product->id onclick=\"UpdateRecord($product->id)\">$product->p_name</option>";
}
echo"</select>";
echo"</center>";
echo"</td>";
echo"<td>";
echo"<center>";
echo"<input class=\"input-mini\" type=\"text\" value=\"1\"/>";
echo"</center>";
echo"</td>";
$i = 0;
foreach($products->fetch_products($id) as $pricer){
if ($i==1) break;
echo"<td id=\"$pricer->category_id\">";
echo"<center>";
echo("<div id=\"output\"><p>$pricer->price</p></div>");
echo"</center>";
echo"</td>";
$i++;
}
echo"</tr>";
}
?>
<tr>
<td></td>
<td></td>
<td></td>
<td>Total: </td>
</tr>
</tbody>
总数:
提前谢谢!我一整天都在试图解决这个问题…您可能正在从接收
AJAX
请求的URL中回显整个HTML
页面。
这就是为什么它引入了一个全新的页面,并将其替换为
$(“#output”)
。您可以发布接收AJAX
请求的页面的代码吗?您的AJAX请求将进入index.php。所以返回的数据是整个index.php页面。这就是为什么一切都在重复
我建议您创建ajax代码正在调用的另一个PHP文件,并生成希望在该PHP文件中返回的HTML。如果您向同一页面发送请求,则应检查该页面的ajax调用,并处理所需的HTML部分。这就是您得到的
index.PHP的整个HTML您需要在ajax调用中传递另一个参数,并在顶部检查调用
function UpdateRecord(id)
{
jQuery.ajax({
type: "GET",
url: "index.php",
data: 'id='+id+'&ajax_call=1',
cache: true,
success: function(data)
{
$('#output').html(data);
}
});
}
index.php
if($_REQUEST['ajax_call']){
$i = 0;
foreach($products->fetch_products($id) as $pricer){
if ($i==1) break;
echo"<td>";
echo"<center>";
echo("<div id=\"output\"><p>$pricer->price</p></div>");
echo"</center>";
echo"</td>";
$i++;
}
die();
}
JS
你的代码似乎没有反映出你在帮助下遇到的问题我已经解决了,但是现在它只改变了第一个价格字段,即使我点击了另一个下拉列表。。。谢谢你的盛情款待@注意:检查所有价格字段的id属性,它们不应该相同,id应该是唯一的,这是所有ajax调用中的第一个价格字段id更新。我在“我的问题”中添加了类别id,以便您可以查看表格。是的,这就是问题所在,但现在我有另一个问题,我将其写为Tjofras答案的注释。:)您还可以使用HTTP\u X\u REQUESTED\u和服务器变量来检测它是否是一个ajax调用,如下所述:是的,我同意,因此上面的想法是检测ajax调用,解决方法取决于使用哪种方法choose@dianuj非常感谢你的回答和时间,你救了我的命:)谢谢
if($_REQUEST['ajax_call']){
$i = 0;
foreach($products->fetch_products($id) as $pricer){
if ($i==1) break;
echo"<td>";
echo"<center>";
echo("<div id=\"output\"><p>$pricer->price</p></div>");
echo"</center>";
echo"</td>";
$i++;
}
die();
}
foreach($products->fetch_products($id) as $product)
{
$price = $product->price;
echo"<option value = $product->id onclick=\"UpdateRecord($product->id,$data->id)\">$product->p_name</option>";
}
echo"</select>";
echo"</center>";
echo"</td>";
echo"<td>";
echo"<center>";
echo"<input class=\"input-mini\" type=\"text\" value=\"1\"/>";
echo"</center>";
echo"</td>";
$i = 0;
foreach($products->fetch_products($id) as $pricer){
if ($i==1) break;
echo"<td id=\"$pricer->category_id\">";
echo"<center>";
echo("<div id=\"output-$data->id\"><p>$pricer->price</p></div>");
echo"</center>";
echo"</td>";
$i++;
}
function UpdateRecord(id,cat_id)
{
jQuery.ajax({
type: "GET",
url: "index.php",
data: 'id='+id,
cache: true,
success: function(data)
{
$('#output-'+cat_id).html(data);
}
});
}