2017-03-03 61 views
0

迭代我从复选框值dataId和我使用的是GET AJAX请求发送它:

dataId = 1, 2, 16, 15, 17, 3, 14, 5, 9, 11; 
URI = "<?php echo site_url('Terpasang/Update_Kebutuhan_ke_Terpasang')?>"; 
$.ajax({ 
    url : URI, 
    type: "GET", 
    data: { "iddata": [dataId] }, 
    dataType: "JSON", 
}); 

在控制器我传递这些数据与代码:

$iddata = array($_GET['iddata']); 
$Countdata = count($iddata); 
for($i = 0; $i <= $Countdata; $i++) 
{ 
    $data = array('id_perjal'=>$iddata[$i]); // this code can't generate id one by one like i wanna : 1, next 2, next 16 etc 
    $this->M_perjal_terpasang->save($data); 
} 
echo json_encode(array("status" => TRUE)); 

回答

0

问题在于如何构建阵列。您无法将变量设置为等于逗号值列表。如果您检查代码,你会看到dataId只有一个值:

dataId = 1, 2, 16, 15, 17, 3, 14, 5, 9, 11; 
 
data = { 
 
    "iddata": [dataId] 
 
}; 
 

 
console.log(data);

为了解决这个问题定义dataId为数组明确:

var dataId = [1, 2, 16, 15, 17, 3, 14, 5, 9, 11]; // note the [] wrapping the values 

然后使用它在您提供给data的对象中:

data: { "iddata": dataId }, 
+0

他能做到'{ “IDDATA”: “[” +数据ID + “]”}'? – guradio

+0

不,这将创建一个字符串 –

+0

感谢您的澄清:) – guradio

0

您需要先为您的“dataId”指定一个变量,然后它需要在您的ajax函数中传递dataId。你也可以在控制台日志中看到这个成功信息。

var dataId=[1,2,16,15,17,3,14,5,9,11]; 
 
URI = "<?php echo site_url('Terpasang/Update_Kebutuhan_ke_Terpasang')?>"; 
 
$.ajax({ 
 
    url : URI, 
 
    type: "GET", 
 
    data: {"iddata":dataId}, 
 
    dataType: "JSON",  
 
    success:function(res){ 
 
     console.log(res); 
 
    } 
 
});

你并不需要一个阵列中添加$ _GET [ 'IDDATA']。如果你想输入cast,那么只需添加(array)$ _ GET ['iddata']。如果一个数组中添加此$ _GET [ 'IDDATA'],那么你会得到你的计数1

$iddata=$_GET['iddata']; 
 
$Countdata=count($iddata); 
 
for($i=0;$i<=$Countdata;$i++) 
 
{ 
 
    $data=array('id_perjal'=>$iddata[$i]); // this code can't generate id one by one like i wanna : 1, next 2, next 16 etc 
 
    $this->M_perjal_terpasang->save($data); 
 
} 
 
echo json_encode(array("status" => TRUE));

0

集数据ID为字符串:

dataId = '1,2,16,15,17,3,14,5,9,11';// remove white space 
URI = "<?php echo site_url('Terpasang/Update_Kebutuhan_ke_Terpasang')?>"; 
$.ajax({ 
    url : URI, 
    type: "GET", 
    data: { "iddata": [dataId] }, 
    dataType: "JSON", 
}); 

在PHP代码:

$iddata = explode(",",$_GET['iddata']);// string to array separated by , 
$Countdata = count($iddata); 
for($i = 0; $i <= $Countdata; $i++) 
{ 
    $data = array('id_perjal'=>$iddata[$i]); 
    $this->M_perjal_terpasang->save($data); 
} 
echo json_encode(array("status" => TRUE)); 
0

使用foreach代替for

删除这些

$Countdata = count($iddata); 
for($i = 0; $i <= $Countdata; $i++) 
{ 
    $data = array('id_perjal'=>$iddata[$i]); // this code can't generate id one by one like i wanna : 1, next 2, next 16 etc 
    $this->M_perjal_terpasang->save($data); 
} 
echo json_encode(array("status" => TRUE)); 

,并添加

foreach($iddata as $id) 
{ 
    $data = array('id_perjal'=>$id); 
    $this->M_perjal_terpasang->save($data); 
} 
+0

如果有帮助,请** [将其标记为ACCEPT **](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。因此[**投票**将导致我的标签计数](http://meta.stackexchange.com/questions/173399/how-to-upvote-on-stack-overflow) –

+0

任何更新? –