我需要将一个json发布到codeigniter 2.2.0中的一个方法,该帖子是在带有jquery-ajax的视图中发布的,如下所示:
function envia_mail_ajax(numero, form_data, ruta){
var iddiv="#mail_"+numero;
window.setTimeout(
function(){
$.ajax({
url: "<?php site_url('emailmasivo'); ?>/" +ruta+ "/" +numero,
cache: false,
type: 'POST',
data: form_data,
dataType: "json",
success: function(html){
$( iddiv ).append(html.mensaje+"\n"+'<br />');
}
});
}, 600);
}
并且像这样使用(在i
之上的循环内):
envia_mail_ajax(i,
{para:correos_e[i],id_masivos:id_masivos_e[i],id_mat_referencia:id_mat_referencia_e[i],
id_tipouser:id_tipouser_e[i],nombre:nombres_e[i], sexo:sexos_e[i], matricula:matriculas_e[i], passa:passa_e[i],id_cuenta:cuenta_id},
"<?php echo $r_ajax; ?>");
现在,我正在以不需要视图的方式编写所有内容,以便能够从终端的命令行运行它,本质上,这告诉我POST到控制器方法"<?php echo site_url('emailmasivo'); ?>/" +ruta+ "/" +numero
form_data中的数据;为了做到这一点,我在POST json to PHP的一个讲座中写了一个方法,我的方法是:
function procesaInfo($Arreglo, $numero){
$url = $Arreglo['r_ajax'];
$ch = curl_init(echo site_url('emailmasivo') . $url . "/" . $numero);
$jsonData = array(
'para' => $Arreglo['lista_mails']['correos_e'][$numero],
'id_masivos' => $Arreglo['lista_mails']['id_masivos_e'][$numero],
'id_mat_referencia' => $Arreglo['lista_mails']['id_mat_referencia_e'][$numero],
'id_tipouser' => $Arreglo['lista_mails']['id_tipouser_e'][$numero],
'nombre' => $Arreglo['lista_mails']['nombres_e'][$numero],
'sexo' => $Arreglo['lista_mails']['sexos_e'][$numero],
'matricula' => $Arreglo['lista_mails']['matriculas_e'][$numero],
'matriculas_e' => $Arreglo['lista_mails']['passa_e'][$numero],
//'id_cuenta' => $Arreglo['lista_mails']['cuenta_id'][$numero]
'id_cuenta' => $Arreglo['id_cuenta']
);
$jsonDataEncoded = json_encode($jsonData);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$result = curl_exec($ch);
}
问题在于,当我尝试使用这样的方法时:
function proceso_envia($nuevoArreglo){
$hola = "hola";
//echo $cuenta_id = $nuevoArreglo['id_cuenta'].PHP_EOL;
//print_r($nuevoArreglo['lista_mails']['correos_e']);
if(count($nuevoArreglo['lista_mails']['correos_e']) != 0){
$j = 0;
for($i = $nuevoArreglo['ini'] ; $i < count($nuevoArreglo['lista_mails']['correos_e']) ; $i++){
if($nuevoArreglo['lista_mails']['correos_e'][$i] != NULL){
$j = $j+1;
sleep(1);
echo "si llega!".PHP_EOL;
$this->procesaInfo($nuevoArreglo, $i);
}
}
}
}
似乎没有数据正在对我的方法进行POST,最糟糕的是,甚至没有达到方法,我怎么知道?好吧,我在echo "I´m here!";
函数的最开头使用了proceso_envia
,没有显示任何内容......我做得对吗?如何将数据正确发布到控制器中的CI方法? thanx i.a.为了你的帮助!