phonegap with codeigniter backend



所以我越来越擅长使用phonegap,但我仍然试图完全添加codeigniter作为后端。我已经能够加载jquery的东西从我的CI控制器到我的phonegap安卓应用程序,但似乎不能提交任何东西到服务器正确。您是否需要一个rest服务器来从phonegap与CI通信?我计划使用ajax后信息CI,但到目前为止无法让它工作。如果有人能帮我克服这个障碍,我会很感激的。由于

链接到相关答案

控制器:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller {

    public function index()
    {
        //$this->load->view('welcome_message');
    $data['query']=$this->site_model->get_last_ten_articles();
$this->load->view('partial1',$data);
    }
    public function addarticle(){
    $headline=$this->input->post('headline');
    $article=$this->input->post('article');
    $this->site_model->insert_entry($headline,$article);    
    }
}

Javascript(在phonegap设备)

function add_article(){

$.ajax({
  type: 'POST',
  url: 'http://testlab.site40.net/droiddev/welcome/addarticle/',
  data: {"headline": "test headline","article": "test article"} 
  error: function(){alert('fail');},
  success: function(data){
   alert('article added');
  },
  dataType: "json"
});
}

首先,让我们运行您的示例,您的post数据是json,数据类型是json,但您的CI实现正在访问post变量。

快速而肮脏的修复方法是在post数据中提交一个uri字符串,例如:

&headline=test%20headline&article=test%20article

这可以通过jquery的序列化函数从表单中生成:

var myData = $('#form-id').serialize();

该post数据将在提交时在$_POST变量中设置,然后通过CI post函数访问:

$this->input->post()

*注意:记住要删除ajax调用中的dataType设置才能正常工作。

一个更政治正确的方法来解决这个问题,你会想要离开你的javascript(这都很好),但你需要设置CI后端作为一个RESTful服务,默认安装的控制器和输入类不会处理它。您需要使用类似于Phil Sturgeon的REST实现:

    有一个github项目的代码,
  • 一篇博客文章(请先阅读这篇文章——这是一篇关于REST服务器的简短入门文章,适合CI相关的使用),
  • 和你已经知道的教程。
  • 哦,还有一个关于设置的视频。

最新更新