[英]Ajax post to remote php file not working with phonegap
我正在尝试使用Ajax post将数据从我的phonegap应用程序中的本地sqlite数据库发送到远程数据库。 我已经检查了php文件,它工作正常,正在插入我的远程数据库。 我还在config.xml文件中添加了对url的访问权限,并添加了$.support.cors = true;
到设备上的就绪功能。 访问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的新手,因此将不胜感激!
这可能是CORS问题,请在您的php文件顶部添加以下行。
header("Access-Control-Allow-Origin: *");
它会解决您的问题。
我弄清楚是什么原因阻止了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%确定这条线是做什么的,如果有人可以详细说明,那会很棒!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.