将json发布到控制器中的codeigniter方法,之前的帖子是在jquery中创建的

时间:2015-02-11 01:32:47

标签: php jquery ajax json codeigniter

我需要将一个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.为了你的帮助!

0 个答案:

没有答案