Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Phonegap应用程序以与Android中的Codeigniter服务器通信,访问控制允许源错误_Codeigniter_Jquery_Jquery Mobile_Cordova - Fatal编程技术网

获取Phonegap应用程序以与Android中的Codeigniter服务器通信,访问控制允许源错误

获取Phonegap应用程序以与Android中的Codeigniter服务器通信,访问控制允许源错误,codeigniter,jquery,jquery-mobile,cordova,Codeigniter,Jquery,Jquery Mobile,Cordova,我对使用phonegap、codeigniter和jQuery Mobile(我的第一个项目)非常陌生,目前已经在客户端使用jQuery Mobile创建了一个应用程序,在服务器端,我使用codeigniter框架创建了一个RESTful API。现在,当我在本地开发浏览器中的应用程序(尚未使用phonegap)时,它与API的通信很好,没有出现任何问题 我昨天在服务器上安装了Codeigniter API,现在遇到了两个问题: 使用jQuery Mobile构建的应用程序不断获得 以下错误:

我对使用phonegap、codeigniter和jQuery Mobile(我的第一个项目)非常陌生,目前已经在客户端使用jQuery Mobile创建了一个应用程序,在服务器端,我使用codeigniter框架创建了一个RESTful API。现在,当我在本地开发浏览器中的应用程序(尚未使用phonegap)时,它与API的通信很好,没有出现任何问题

我昨天在服务器上安装了Codeigniter API,现在遇到了两个问题:

  • 使用jQuery Mobile构建的应用程序不断获得 以下错误:

    访问控制不允许源本地主机允许源

现在我已经读了一些书,大多数人说使用jsonp而不是json,并且在服务器端使用以下内容:

$CI->output->set_header("Access-Control-Allow-Origin: *");
$CI->output->set_header("Access-Control-Expose-Headers: Access-Control-Allow-Origin");
$CI->output->set_status_header(200);
$CI->output->set_content_type('application/json');
现在我的问题是,我不完全确定哪一个是用来解决问题的,是否两者都需要实施,等等。如果它们需要解决,如何解决?有没有一个地方有很好的文件,可以教我如何处理这个问题,最好我想读一些地方,让我可以学习

  • 第二个问题是当我将jQuery移动应用程序放入 phonegap并为Android构建它。应用程序无法获取 来自服务器的数据。这是因为十字架 上述域错误或此问题不同?我也做了一些 阅读本节以及我的Android config.xml I 添加了以下代码:

    <access origin="http://10.0.2.2*" subdomains="true"/> 
    


但我很抱歉,我仍然无法从服务器上提取任何内容。就像我说的,我是一个新手,但我真的很感激在这件事上能得到一些帮助。另外,我知道我没有发布代码,但根据评论,我将发布社区需要的代码来帮助解决这个问题,只需指定代码即可。提前感谢您的帮助

关于
访问控制允许起源的问题,我遇到了同样的错误,通过将这一行
放在项目根目录的
索引.php
中解决了这个问题。

这个问题没有得到100%的回答,但现在要感谢@Niloy Saha的帮助,要修复Codeigniter RESTful框架的访问控制允许原点错误,只需转到控制器文件夹中的控制器,并在顶部粘贴

header('Access-Control-Allow-Origin: *');
这样,您就可以从浏览器与服务器进行通信,并获得响应。经过几个小时的努力,我终于解决了我的问题。在res/xml文件夹中的Android项目中,有一个名为config.xml的文件。在该文件中,请确保具有以下代码:

<access origin="http://10.0.2.2*" subdomains="true"/> 

并确保您具备以下条件:

<uses-permission android:name="android.permission.INTERNET" />


在您的AndroidManifest.xml中。对我来说,这似乎让一切都运转起来了

我做了和你一样的事情,Zend FW在服务器上使用API和jQuery移动应用程序

我使用过JSONP,没有使用任何访问控制Allow Origin头

我的控制器中有一个方法:

function returnData($data) {

    header('Content-type: text/javascript');
    echo $_GET['callback']. '('. json_encode($data). ')';
    die();

}
在API调用结束时,我使用它返回数据

正在jQuery中获取数据:

$.ajax({
  dataType: "jsonp",
  url: url,
  data: {someparam: 'value'},
  success: function(data) { /* ur data is here */ }
});