当我试图从codeigniter中的控制器文件返回数据时,为什么ajax post方法返回空警报框

时间:2015-03-22 23:22:04

标签: javascript codeigniter

这是我的ajax功能

$(function(){
       $("#myform").submit(function(){ //i want to get data from my form after submittingit
         dataString = $("#myform").serialize();
         alert(dataString);
         $.ajax({
           type: "POST",
           url: "<?php echo base_url(); ?>index.php/customer/viewCustomerData",
           data: dataString,

       success: function(data){
           alert(data);
       }

     });

     return false;  

  });
   });

这是我的控制器类功能

function viewCustomerData(){

    if($_POST){
    $name = $_POST['name'];
    return 'name';
    }
 else {
        return false;
    }

}

其他的事情是我试图提醒从表单序列化中获取的数据字符串,但它也是空的。我想从javascript文件发送关键字后从数据库返回数据集。我试过javascript文件与我的控制器功能正确连接。所以我试图返回一些值并使用警告框显示它。但它给出了空洞的结果。

3 个答案:

答案 0 :(得分:1)

这是使用ajax

提交表单的更好方法
$(document).on("submit", "#myform", function(event)
{
    event.preventDefault();
    $.ajax({
        url: "<?php echo base_url(); ?>index.php/customer/viewCustomerData"
        type: "POST",            
        data: new FormData(this),
        processData: false,
        contentType: false,
        success: function (data, status)
        {
           alert(data);
        },
        error: function (xhr, desc, err)
        {


        }
    });
});

答案 1 :(得分:1)

试试这个

$(function(){
   $("#myform").submit(function(){
     dataString = $("#myform").serialize();
     alert(dataString);
     $.ajax({
       type: "POST",
       url: "<?php echo base_url(); ?>index.php/customer/viewCustomerData",
       data: dataString,
       cache: false,
       datatype: 'json',
       success: function(data){
           alert(data.result);
       }
     });
   });
});
控制器中的

function viewCustomerData(){

    if($this->input->post('name'){
        $result = $this->input->post('name');
    } else {
        $result = false;
    }
    header('Content-Type: application/json');
    echo json_encode(array('result' => $result));

}

答案 2 :(得分:0)

您无法提醒$("#myform").serialize();,因为这是一个对象,而不是它尝试console.log($("#myform").serialize();)的提醒 然后打开浏览器控制台并查看打印内容

$.ajax({
 type: "POST",
       url: "<?php echo base_url(); ?>index.php/customer/viewCustomerData",
       data: dataString,
})
  .done(function( data ) {
    if ( console && console.log ) {
      console.log( "Sample of data:", data);
    }
  });