Ajax发布到远程php文件无法使用phonegap

时间:2016-01-19 17:47:59

标签: javascript php jquery ajax cordova

我正在尝试使用Ajax post将数据从我的phonegap应用程序中的本地sqlite数据库发送到我的远程数据库。我检查了php文件,它工作正常,并插入我的远程数据库。我还在config.xml文件中添加了对url的访问权限,并将$.support.cors = true;添加到on device ready函数中。  访问config.xml中的url:

  <access origin="*" />
  <access origin="http://ec2-54-229-109-138.eu-west-1.compute.amazonaws.com/chrisTest.php" subdomains="true" />

我目前正在使用jquery-1.7.2.min和jquery.mobile-1.1.0.min。

使用Javascript:

$("#upload").live('click', function(){
    alert("Upload");
    db.transaction(uploadQuery, errorCB);
})


function uploadQuery(tx){
    tx.executeSql('SELECT * FROM DEMO',[], posting, errorCB);
}


function posting(tx, results){
    var len = results.rows.length;
    alert("Posting");
     for (var i = 0; i < len; i++){
         var trackID =results.rows.item(i).trackID;
         var longitude= results.rows.item(i).longitude;
         var latitude=results.rows.item(i).latitude;

            var data = {
              "trackID": trackID,
              "longitude": longitude,
              "latitude": latitude
            };
            data = $.param(data);
            $.ajax({
              type: "POST",
              dataType: "json",
              url: "http://ec2-54-229-109-138.eu-west-1.compute.amazonaws.com/chrisTest.php", //Relative or absolute path to handle.request.ajax file
              data: data,
              success: function(data) {
                alert("Form submitted successfully.");
              }
            });
      }
}

PHP:

<?php

$username="mxxxxx";
$password="xxxx";
$database="xxxxx";
$url = "xxxx";

$trackID = $_POST['trackID'];
$longitude =$_POST['longitude'];
$latitude  = $_POST['latitude'];


mysql_connect($url,$username,$password);

@mysql_select_db($database) or die( "Unable to select database");

$query = "INSERT INTO test(trackID,longitude,latitude) VALUES ('$trackID','$longitude','$latitude')";

mysql_query($query);

mysql_close();
echo "You successfully added your Coupon";  

?>

我是使用ajax的新手,所以任何帮助都会受到赞赏!

2 个答案:

答案 0 :(得分:1)

这可能是CORS问题,将以下行添加到您的php文件的顶部。

header("Access-Control-Allow-Origin: *");

它将解决您的问题。

答案 1 :(得分:0)

我想出了什么阻止了ajax帖子,我删除了以下代码行:

 <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

创建phonegap应用时,会在index.html文件中自动生成此行。如果他们遇到同样的问题,这对其他人来说可能是值得一试的,尽管我相信这条线必须出于安全原因而在应用程序中。因为我是新手,所以我不能100%确定这条线是做什么的,如果有人可以详细说明那就太好了!