我有一个简单的目录:
<?php foreach ($productArray as $key => $value) { ?>
<div class="product">
<form id="cartForm">
<table border='1' cellspacing='0' cellpading='2' width='300 px' align='center'>
<tr>
<td>ID</td>
<td><?php echo $productArray[$key]["ID"];?></td>
</tr>
<tr>
<td>kategorija</td>
<td><?php echo $productArray[$key]["category"];?></td>
</tr>
<td>kiekis</td>
<td><?php echo $productArray[$key]["quantity"];?></td>
</tr>
<div>
<input type="text" id="inputQuantity_<?php echo $productArray[$key] ["ID"];?>"/>
<input type="button" id="add_<?php echo $productArray[$key]["ID"];?>" value="prideti" onClick="cartAction('add','<?php echo $productArray[$key]["ID"];?>')" />
按下此按钮我想将数组参数传递给我的cartAction
函数。
function cartAction(action, productID) {
var stringQuery = "";
if ($.trim(action) == 'add') {
stringQuery= 'action=' + action + '&ID=' + productID + '&quantity=' + $("#inputQuantity_" + productID).val();
}
jQuery.ajax({
url: "index.php",
data: stringQuery,
type: "POST",
success: function(data) {
alert(data);
}
});
}
而不是数组参数alert(data)
显示整页代码。收集数组数据并发送到javascript函数的最佳方法是什么?
答案 0 :(得分:0)
<?php foreach ($productArray as $key => $value) { ?>
<div class="product">
<form >
<table border='1' cellspacing='0' cellpading='2' width='300 px' align='center'>
<tr>
<td> ID </td> <td><?=$value["ID"];?> </td>
</tr>
<tr>
<td> kategorija </td> <td><?=$value["category"];?> </td>
</tr>
<td> kiekis </td> <td><?=$value["quantity"];?> </td>
</tr>
<div>
<input type="hidden" name="ID" value="<?=$value["ID"];?>"/>
<input type="hidden" name="category" value="<?=$value["category"];?>"/>
<input type="hidden" name="quantity" value="<?=$value["quantity"];?>"/>
<input type="submit" class="submit" value="prideti" />
</form>
<?php } ?>
<script>
$(function(){
$('.submit').click(function(){
data = $(this).closest('form').serializeArray();
jQuery.ajax({
url:"index.php",
data:stringQuery,
type:"POST",
success: function(data){
alert(data);
}
});
return false ;
});
});
</script>
答案 1 :(得分:0)
请传递json而不是创建字符串。
stringQuery = {"action":action,"ID":productID,"quantity":$("#inputQuantity_"+productID).val()}
答案 2 :(得分:0)
因为您使用的是字符串查询,看起来您将在foo\footnotemark bar
数组中找到您的数据,而不是$_GET
如果您想使用$_POST
,请将数据构建为对象:
$_POST
根据index.php的编写方式,您需要检查$ _POST [&#39; action&#39;]是否在开头设置,如果是,请处理您的验证等以及执行操作( mysql等等)然后在输出整个页面html之前停止执行。
您要输出的任何数据都可以使用php中的function cartAction(action, productID){
if($.trim(action)=='add'){
stringQuery= {
'action': action,
'ID': productID,
'quantity': $("#inputQuantity_"+productID).val()
}
$.ajax({
url: 'index.php',
data: stringQuery,
dataType: 'json', //so ajax knows how to populate the response
type: 'POST',
success: function(data) { alert(data); }
});
}
}
输出。
此外,您可能希望使用json_encode()
而不是{j}中的alert(data)
,并使用开发人员工具查看其中的内容(F12,然后是控制台标签)
答案 3 :(得分:0)
将此脚本替换为您的脚本。
console.log(data)
答案 4 :(得分:0)
@ Darius92
根据您提出的问题, 而不是数组参数提醒(数据)显示整页代码 ,我相信您假设变量&#39 ; data
&#39; alert(data)
中的data
会引用data:stringQuery
行中的data
。是这样吗?
如果我的假设是正确的,那你错了!
success: function(data){alert(data); }
中的变量url:"index.php",
用于处理index.php
的响应。这意味着它是您的AJAX文件($_REQUEST
)的响应。
您应该在AJAX文件index.php
中打印AJAX request
数组,以了解哪些信息已发布到您的AJAX handler file, index.php
。
您的<?php
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
?>
应如下所示:
@code
IF %ERRORLEVEL% NEQ 0 GOTO ProcessError
@code
exit /b 0
:ProcessError
@codeprocess error
exit /b 1
我认为你意识到你写的是什么以及你期待什么!
答案 5 :(得分:0)
你也可以使用json代替字符串,见下文
path/filename/ext(line,col)
在此ajax请求中 contentType 表示您发送请求数据的格式, dataType 表示您希望数据格式化
在这段代码中传递了json这是好方法