首页 文章

Codeigniter没有从ajax接收值

提问于
浏览
1

我真的需要一些帮助 . 我正在使用 phonegap/cordova 和使用 codeigniter 的webservice开发移动应用程序 . 这个应用程序有注册功能,这意味着应用程序将数据通过 Ajax 发送到 codeigniter 控制器,然后将其保存到数据库中 . 实际上它在localhost中正常工作 . 但在我将所有 codeigniter 文件传输到实时服务器后, ajax 返回错误 . 我已经在codeigniter中设置了config,database,base_url . 有人知道这是什么问题吗?

这是ajax代码

var base_url = "http://bizprohandler.com/token/";

var reg = {"name": name, "email": email, "country": country, "mobile_number": mobile_number, "bitcoin_id": bitcoin_id, "user_id": user_id, "password": password};
$.ajax({
        type       : "POST",
        url        : base_url+'index.php/webservices/register',
        data       : reg,
        dataType   : 'json',
        timeout    : 2000,
        success: function(e){
            if(e.status == 0){
                $.mobile.changePage("#login",{reverse:false,transition:"slide"});
                alert(e.message);
            }
        },
        error: function(e){
            alert('error');
        }
    });

这是codeigniter控制器

public function register()
{
    $json = "";
    $result_array = array();

    $json = file_get_contents('php://input');

    $data = json_decode($json, true); //decode into array.\

    $name             = $data['name'];
    $email        = $data['email'];
    $country          = $data['country'];
    $mobile_number   = $data['mobile_number'];
    $bitcoin_id       = $data['bitcoin_id'];
    $user_id          = $data['user_id'];
    $password         = md5($data['password']);

    $this->user_model->insert_user($name,$email,$country,$mobile_number,$bitcoin_id,$user_id,$password);
    $result_array['status'] = 0;
    $result_array['message'] = 'Successfully registered';
    $rep = json_encode($result_array);
    echo $rep;
    exit;
}

1 回答

  • 0

    这可能不是它失败原因的答案,但它可以帮助您查看返回的错误 . 我建议的 register() 代码更多是CodeIgniter-ish .

    function register()
    {
      // returns array of all POST items passed through the XSS filter
      $data = $this->input->post(NULL, TRUE); 
    
      $this->user_model->insert_user($data);//you might need to modify insert_user()?
      $result_array['status'] = 0;
      $result_array['message'] = 'Successfully registered';
      echo json_encode($result_array);
    }
    

    正如代码注释所述,您可能需要修改 user_model->insert_user() . 由于您没有共享该代码,因此不知道那里发生了什么 . 除非您对刀片有特殊要求,否则可以直接插入: $this->db->insert('yourTable', $data);

    修改了以下AJAX代码,以便 error: function... 将提醒有用的故障排除信息 .

    var base_url = "http://bizprohandler.com/token/";
    var reg = {"name": name, "email": email, "country": country, "mobile_number": mobile_number, "bitcoin_id": bitcoin_id, "user_id": user_id, "password": password};
    
    $.ajax({
            type       : "POST",
            url        : base_url+'index.php/webservices/register',
            data       : reg,
            dataType   : 'json',
            timeout    : 2000,
            success: function(e){
                if(e.status == 0){
                    $.mobile.changePage("#login",{reverse:false,transition:"slide"});
                    alert(e.message);
                }
            },
            error: function(jqXHr, textStatus, errorThrown){
                alert(textStatus);
                alert(errorThrown);
            }
        });
    

相关问题