如何让ajax调用在phonegap上工作



我正在尝试执行ajax调用。只是没有从服务器得到任何反馈。有人能帮我看一下我的代码并建议我怎么做吗?我在这里查了很多答案,但似乎无法让它正常工作

Jquery代码

这是执行ajax调用的jquery代码

$(document).ready(function(){
$('#loadAllProducts').html('Loading Product...<i class="fa fa-spinner fa-spin"></i>').fadeIn(); 

$.ajax({
type : 'post',
url : 'https://spg.ng/farmtransactpro/api/loadAllProductsOnLoad.php', 
//data :  dataString,
crossDomain: true,
success : function(result){
$('#loadAllProducts').html(result).fadeIn();    

}

});


});

loadAllProductsOnLoad.php

这是api内容

<?php
header('Content-Type: application/json');
header("Access-Control-Allow-Origin: *");

echo 'hi...am bringing feedback';
?>

config.xml

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.farmtransact" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Farmtransact</name>
<description>
FarmTransact is an online marketplace which consists of all kinds of agricultural products and agricultural services
</description>
<author email="" href="">
Chike Okoli
</author>
<content src="index.html" />
<preference name="DisallowOverscroll" value="true" />
<preference name="android-minSdkVersion" value="14" />
<access origin="https://spg.ng/farmtransactpro/api/" />


<plugin name="cordova-plugin-whitelist" source="npm" spec="1.1.0" />
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />

<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>


<icon density="ldpi" src="www/res/icons/android/icon-36-ldpi.png" />
<icon density="mdpi" src="www/res/icons/android/icon-48-mdpi.png" />
<icon density="hdpi" src="www/res/icons/android/icon-72-hdpi.png" />
<icon density="xhdpi" src="www/res/icons/android/icon-96-xhdpi.png" />
<icon density="xxhdpi" src="www/res/icons/android/icon-128-xxhdpi.png" />
<icon density="xxxhdpi" src="www/res/icons/android/icon-192-xxxhdpi.png" />

<splash density="land-ldpi" src="www/res/screens/android/screen-ldpi-landscape.png" />
<splash density="land-mdpi" src="www/res/screens/android/screen-mdpi-landscape.png" />
<splash density="land-hdpi" src="www/res/screens/android/screen-hdpi-landscape.png" />
<splash density="land-xhdpi" src="www/res/screens/android/screen-xhdpi-landscape.png" />


<splash density="port-ldpi" src="www/res/screens/android/screen-ldpi-portrait.png" />
<splash density="port-mdpi" src="www/res/screens/android/screen-mdpi-portrait.png" />
<splash density="port-hdpi" src="www/res/screens/android/screen-hdpi-portraite.png" />
<splash density="port-xhdpi" src="www/res/screens/android/screen-xhdpi-portrait.png" />
<splash src="splash.png" />
</platform>
<access origin="https://spg.ng/farmtransactpro/api/" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
</widget>

这不会触发success处理程序。

添加一个error处理程序,并将响应记录到控制台。

您将看到它包含statusText: "parsererror",这是假装响应是Content-Type: application/json,但随后发送的数据实际上不是有效的JSON的结果。

因此,解决方案:让您的PHP脚本发送实际有效的JSON。

正如我在评论中所说,您可能在以下方面有问题:内容安全策略

我用Cordova构建了一些应用程序,但我不是很高级。不过这可能会对你有所帮助,所以试试吧:

->在主index.html文件中,将其添加到head部分:

<meta http-equiv="Content-Security-Policy" content="connect-src 'self' https://spg.ng/farmtransactpro/api/">

这样行吗?

请参阅此处Cordova内容安全政策的完整指南-文档

最新更新