我不知道是否可能,但是我需要通过复选框值通过url内的表单ou发送一些信息。
下面的代码在产品循环内,并在每个产品上创建一个复选框(产品比较方法)。
就我而言,不可能在下面的表单中添加此代码。
<?php
echo '<div><input type="checkbox" value="' . $products_id .'" id="productsCompare" title="Compare" onclick="showProductsCompare()" /> Compare</div>';
?>
为解决这一点,我开始使用ajax方法并将结果放入$ _SESSION
我的脚本用于显示checbox值
$(function() {
$('input[type=checkbox]').change(function() {
var chkArray = [];
$('#container').html('');
//put the selected checkboxes values in chkArray[]
$('input[type=checkbox]:checked').each(function() {
chkArray.push($(this).val());
});
//If chkArray is not empty create the list via ajax
if (chkArray.length !== 0) {
$.ajax({
method: 'POST',
url: 'http://localhost/ext/ajax/products_compare/compare.php',
data: { product_id: chkArray }
});
}
});
});
最后通过此代码在另一页上发送信息。就像您看到的那样,在这种情况下没有表单。
<div class="col-md-12" id="compare" style="display:none;">
<div class="separator"></div>
<div class="alert alert-info text-md-center">
<span class="text-md-center">
<button class="btn"><a href="compare.php">Compare</a></button>
</span>
</div>
</div>
没问题,除了我的compare.php文件之外,其他所有东西都工作正常,我没有我的Ajax值。我在ajax文件中插入了session_start
但没有值插入到compare.php中。
我尝试了不同的方法,将session_start()
放在compare.php内不起作用。
我唯一的解决方案是在我的产品文件中包含hidden_field,并在可能的情况下在整个数组中动态包含ajax的值。 在这种情况下,hidden_fields的值必须在数组下并由表单发送。
必须重写此脚本,以将chechbox值包含在数组下 不使用ajax。如何插入好的代码?
$(function() {
$('input[type=checkbox]').change(function() {
var chkArray = [];
$('#container').html('');
//put the selected checkboxes values in chkArray[]
$('input[type=checkbox]:checked').each(function() {
chkArray.push($(this).val());
});
//If chkArray is not empty show the <div> and create the list
if (chkArray.length !== 0) {
// Remove ajax
// some code here I suppose to create an array with the checkbox value when it is on true
}
});
});
以及此代码和表单
<?php
echo HTML::form('product_compare', $this->link(null, 'Compare&ProductsCompare'), 'post');
// Add all the js values inside an array dynamically
echo HTML::hidddenField('product_compare', $value_of_javascript);
?>
<div class="col-md-12" id="compare" style="display:none;">
<div class="separator"></div>
<div class="alert alert-info text-md-center">
<span class="text-md-center">
<button class="btn"><a href="compare.php">Compare</a></button>
</span>
</div>
</div>
</form>
注意:下面的此代码未包含在表单中(对此没有任何更改)。
<?php
echo '<div><input type="checkbox" value="' . $products_id .'" id="productsCompare" title="Compare" onclick="showProductsCompare()" /> Compare</div>';
?>
我的问题是:
如何将复选框的功能中的$value_of_javascript
填充为true,以便在compare.php中正确发送信息
如果我的问题没有足够的信息,我将编辑此帖子并进行更新。
谢谢。
答案 0 :(得分:0)
您无法将JavaScript对象传递到服务器进程。您需要将AJAX data
作为字符串传递。您可以为此使用JavaScript JSON.stringify()
方法。
$.ajax({
method: 'POST',
url : 'http://localhost/ext/ajax/products_compare/compare.php',
data : JSON.stringify({product_id: chkArray})
});
一旦到达您的PHP流程,您就可以使用PHP JSON方法将其转换为对PHP友好的数据...
<?
$myArray = json_decode($dataString, true);
// ... etc ... //
?>
请参阅: