PhoneGap与CodeIgniter后端结合使用

4

我正在努力学习使用PhoneGap,但仍在尝试将CodeIgniter完全作为后端添加。我已经成功地使用jQuery从我的CI控制器中加载了某些内容到我的PhoneGap Android应用程序中,但似乎无法正确地向服务器提交任何内容。您需要一个REST服务器才能通过PhoneGap与CI通信吗?我打算使用ajax post将信息发送到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);    

    }
}

在PhoneGap设备上的Javascript

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"
});

}

请展示您编写的代码,说明它与CodeIgniter后端无法成功通信。这是在模拟器上还是在设备上? - Femi
将分析器添加到您的 add_article 类中:$this->output->enable_profiler(TRUE); 它将输出所有捕获的数据(POST 等)。也许您只是打错了某些东西,但是分析器是您的好朋友! - Jakub
@Jakub 谢谢你的分析器提示!完全忘了,它很有用 :) - CI_Guy
@CI_Guy,我也在尝试做同样的事情,你是如何将CI与PhoneGap集成的?这可能是一个很晚的问题,但你能帮忙吗?另外,你为什么不能在ajax调用中使用"base_url"? - Habib Rehman
1个回答

6
首先,让我们运行您的示例,您的帖子数据是JSON,并且数据类型是JSON,但是您的CI实现正在访问帖子变量。
快速而简单的解决方法是提交一个uri字符串,例如:
&headline=test%20headline&article=test%20article 可以使用jquery序列化函数从表单生成此类帖子数据:
var myData = $('#form-id').serialize();
此帖子数据将在提交时设置在$_POST变量中,稍后可以通过CI post函数访问: $this->input->post()
*注意:要使此项工作,请记住删除ajax调用中的dataType设置。
要以更加政治正确的方式解决此问题,您需要保留JavaScript(这很好),但需要将CI后端设置为RESTful服务,安装默认控制器和输入类无法处理它。您需要使用像Phil Sturgeon的REST实现这样的东西:
  • 这里有一个GitHub项目的代码,
  • 一篇博客文章(先读这个——它是关于CI相关使用REST服务器的好短入门),
  • 以及你已经知道的教程
  • 哦,还有一个视频介绍如何设置它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接