jquery - 带有 Codeigniter 后端的 PhoneGap

标签 jquery ajax json codeigniter cordova

所以我越来越擅长使用p​​honegap,但仍在尝试完全添加codeigniter作为后端。我已经能够将 jquery 中的某些内容从 CI 的 Controller 加载到我的 PhoneGap Android 应用程序,但似乎无法正确向服务器提交任何内容。您是否需要一个 REST 服务器来从 PhoneGap 与 CI 进行通信?我本来计划使用 ajax post 向 CI 发送信息,但到目前为止还无法让它工作。我真的很感激有人能帮助我克服这个障碍。谢谢

link to relative answer

Controller :

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

}

最佳答案

首先,让我们运行您的示例,您的帖子数据是 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 服务、默认安装的 Controller 和输入类不会处理它。您需要使用 Phil Sturgeon 的 REST 实现之类的东西:

  • 有一个github project对于代码,
  • 一个blog post (首先阅读本文 - 这是有关 CI 相关使用的关于 REST 服务器的一个很好的简短入门),
  • 还有tutorial你已经知道了。
  • 哦还有一个video设置它。

关于jquery - 带有 Codeigniter 后端的 PhoneGap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7539414/

相关文章:

javascript - ajax post请求后范围变量没有改变

ruby-on-rails - 从rails方法获取json数据

json - 自定义 akka 持久化(播放!)JSON(反)序列化器

jquery - 我如何使用 tablesorter 处理 4 行组

javascript - Chrome 在事件被阻止后显示目标链接

javascript - Access-control-allow-origin 无法在 POST 请求中使用 ajax

javascript - 请引用我的以下代码。我想使用ajax在 View 中显示数据,但我收到错误[obect object]]

json - Flutter 使用健全的 null 安全性将多级 JSON 解析为类

javascript - jqGrid 中调用 jQuery 函数的自定义格式化程序

javascript - 将超链接传递和获取到单个 JQuery 函数中