为什么 Javascript 数组不会在 php 中崩溃?
Why Javascript array doesn't implode in php?
其实我有这个数组var checked_rls= ['24','56'];
var checked_rls = []
$("input[name='chk_cont[]']:checked").each(function ()
{
checked_rls.push($(this).val());
});
然后我尝试使用 AJAX
传递它
$.ajax(
{
type :"POST",
url : "sale_ajax.php",
data:
{
rls : checked_rls,
rls_date : $("#rls_date").val()
},
success: function(msg)
{
alert('saved successfully');
},
error: function()
{
alert("Failure");
}
});
然后我在 sale_ajax.php 文件中收到了这样的数组 $cont = $_POST['rls'];
现在的问题是我可以在 forEach 函数中 运行 这个数组,但是当我试图将这个数组内爆成一个字符串时它只有 returns 一个值。
例如在这种情况下,我通过了 24,56 并且当我尝试 implode(",",$cont)
;它只有 returns 第一个值,24:
var_dump($cont) output is
array(2){[0]=>string(2) "24" [1]=>string(2) "56"}
而 php 代码是:
if(isset($_POST['rls']))
{
$rls_date = $_POST['rls_date'];
$cont = $_POST['rls'];
$rls_cont_sold = implode(",",$cont);
$rls_insert = mysql_query("INSERT INTO release_details (release_date, cont_sold_id) VALUES (STR_TO_DATE('$rls_date', '%d-%m-%Y'), '$rls_cont_sold')")or die(mysql_error());
$id = mysql_insert_id();
foreach($cont as $val)
{
$cont_sold_update = "UPDATE cont_sold SET release_details_id = '$id' WHERE cont_sold_id = '$val'";
$insert = mysql_query($cont_sold_update)or die(mysql_error());
}
}
而 var_dump($_POST) 是
array(2){
["rls"]=>(array(2){[0]=>string(2) "24" [1]=>string(2) "56"})
["rls_date"]=>string(10) "10-04-2015"
}
在这种情况下实际发生了什么?
谢谢
将以下代码放入 chk_count
元素的 click
事件中:-
$("input[name='chk_cont[]']").click(function(){
var checked_rls = [];
$("input[name='chk_cont[]']:checked").each(function ()
{
checked_rls.push($(this).val());
});
});
与其传递一个数组,为什么不传递一个字符串本身,它会减少你的步骤。
var checked_rls = "";
$("input[name='chk_cont[]']:checked").each(function ()
{
checked_rls += $(this).val()+",";
});
其实我有这个数组var checked_rls= ['24','56'];
var checked_rls = []
$("input[name='chk_cont[]']:checked").each(function ()
{
checked_rls.push($(this).val());
});
然后我尝试使用 AJAX
传递它 $.ajax(
{
type :"POST",
url : "sale_ajax.php",
data:
{
rls : checked_rls,
rls_date : $("#rls_date").val()
},
success: function(msg)
{
alert('saved successfully');
},
error: function()
{
alert("Failure");
}
});
然后我在 sale_ajax.php 文件中收到了这样的数组 $cont = $_POST['rls'];
现在的问题是我可以在 forEach 函数中 运行 这个数组,但是当我试图将这个数组内爆成一个字符串时它只有 returns 一个值。
例如在这种情况下,我通过了 24,56 并且当我尝试 implode(",",$cont)
;它只有 returns 第一个值,24:
var_dump($cont) output is
array(2){[0]=>string(2) "24" [1]=>string(2) "56"}
而 php 代码是:
if(isset($_POST['rls']))
{
$rls_date = $_POST['rls_date'];
$cont = $_POST['rls'];
$rls_cont_sold = implode(",",$cont);
$rls_insert = mysql_query("INSERT INTO release_details (release_date, cont_sold_id) VALUES (STR_TO_DATE('$rls_date', '%d-%m-%Y'), '$rls_cont_sold')")or die(mysql_error());
$id = mysql_insert_id();
foreach($cont as $val)
{
$cont_sold_update = "UPDATE cont_sold SET release_details_id = '$id' WHERE cont_sold_id = '$val'";
$insert = mysql_query($cont_sold_update)or die(mysql_error());
}
}
而 var_dump($_POST) 是
array(2){
["rls"]=>(array(2){[0]=>string(2) "24" [1]=>string(2) "56"})
["rls_date"]=>string(10) "10-04-2015"
}
在这种情况下实际发生了什么? 谢谢
将以下代码放入 chk_count
元素的 click
事件中:-
$("input[name='chk_cont[]']").click(function(){
var checked_rls = [];
$("input[name='chk_cont[]']:checked").each(function ()
{
checked_rls.push($(this).val());
});
});
与其传递一个数组,为什么不传递一个字符串本身,它会减少你的步骤。
var checked_rls = "";
$("input[name='chk_cont[]']:checked").each(function ()
{
checked_rls += $(this).val()+",";
});