我在将正确的id函数传递回AJAX时遇到了一些困难。
我正在创建一个产品公告生成器,允许通过其SKU代码添加项目(工作正常)。我的问题是,当点击公告时,该公告的预览会加载到div中,并显示与该公告关联的所有产品。
从这些结果中,我试图添加从公告中删除产品的功能。问题是传递回AJAX的值仅属于第一个产品。如果它是除第一个项目之外的任何其他项目,它将不会发送属于特定项目的值。
这是通过AJAX加载到div中的代码(属于main.php),并与每个与选定公告关联的产品循环
echo "<form name='myDelForm'>
$news_gen_id<br>
<input type='hidden' id='delccode' value='".$news_gen_id."'>
<input type='hidden' id='deledit' value='".$edit."'>
<input type='button' onclick='ajaxDelCcode()' value='Delete' /><br></form>
</td>";
AJAX代码(在index.php上,在main.php中调用的div也位于此处)是
function ajaxDelCcode(){
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new
ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById("ajaxMain2");
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
var deledit = document.getElementById("deledit").value;
var delccode = document.getElementById("delccode").value;
var queryString = "?delccode=" + delccode + "&deledit=" + deledit;
ajaxRequest.open("GET", "main.php" + queryString, true);
ajaxRequest.send(null);
}
//-->
</script>
目前,使用这两段代码,我只能成功删除第一个产品。当产品循环时,delccode变量似乎没有改变(虽然当我在循环中回显变量时,它肯定会变为适当的值......它只是没有正确地将它传递回AJAX。)
我尝试使用AJAX代码,将其放在main.php产品循环中,并在每个循环期间更改函数名称(例如ajaxDelCcode $ news_gen_id())以及按钮本身,以便它调用AJAX特有的。如果您直接访问main.php,它可以工作...但是在main.php被调用到div之后,它不会从index.php。
我无法弄清楚如何从div中的main.php传递正确的循环值,返回到index.php上的AJAX代码
任何人都可以帮我吗?
谢谢,
达斯汀
答案 0 :(得分:0)
您用来删除的代码是什么样的?它与您上面发布的表单在同一个php文件中吗?如果是这样,表格是否意外地提交给自己?就像用户在输入类型=文本控件上按Enter键一样?我知道你想通过ajax这样做,但我怀疑表格是你的问题。
借调jQuery评论。
答案 1 :(得分:0)
不要将id存储在输入中,只需将其作为参数传递给函数:
function ajaxDelCcode(delccode) { ...
<input type='button' onclick='ajaxDelCcode(\"".$news_gen_id."\")' value='Delete' />
另外,如果我是你,我会交换报价。或者更好的是,不要使用echo,而是打破PHP代码并编写HTML:
<? ... ?><input type="button" onclick="ajaxDelCcode('<?= $news_gen_id ?>')" value="Delete" /><? ... ?>
答案 2 :(得分:0)
这里试试这个
1)在文档中添加jquery。
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
2)给出输入名称属性
<input type='hidden' name='delcode' id='delccode' value='".$news_gen_id."'>
<input type='hidden' name='deledit' id='deledit' value='".$edit."'>
3)使用类似这样的函数而不是上面的所有代码
function ajaxDelCcode() {
$.ajax({
url: "main.php",
type: "GET",
dataType: "text",
data: $("#myDelForm").serialize(),
success: function(rText) {
$("#ajaxMain2").text(rText);
}
});
}