Ajax-звонок, который я создал, отлично работает с браузером и Android, но при работе на iphone он зависает навсегда или будет тайм-аутом, если добавлена опция тайм-аута.Cordova (Phonegap) ajax вызывает зависание на устройстве iphone
Аякса выглядит следующим образом:
$.ajax({
url: "http://pbcc.ca/xxx/index.php",
data: {api: 'test'},
type: "GET",
dataType: "jsonp",
jsonp: 'callback',
beforeSend: function() {
alert("beforeSend");
},
success: function(data) {
alert("success");
},
error: function(e,x) {
alert("error");
}
});
Я попробовал это после того, как документ готов и устройства готовы, только beforeSend ответы в обоих случаях. В Интернете есть несколько сообщений с подобными проблемами, и я пробовал некоторые методы, но ни одна из них не решила мою проблему. Может ли кто-нибудь помочь? Благодарю.
Обновление: Протестировано на стороне сервера, сервер не отвечает на вызов ajax от ios. На самом деле никаких данных, переданных на сервер, я думаю.
Update2:
Я получаю эту ошибку:
Refused to load the script 'http://www.pbcc.ca/xxx/index.php?callback=...' because it violates the following Content Security Policy directive: "default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'". Note that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.
Meta:
<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 *; connect-src http://pbcc.ca">
info.plist (я не ставил их вместе в начале):
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>pbcc.ca</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
config.xml (по умолчанию, созданное Кордова):
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.polarbear.lunch" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>xxx</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="[email protected]" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" version="1" />
<access origin="*" />
<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>
Какие версии Кордовы и iOS вы используете? –
cordova 5.3.3 и ios 9.0.2 (iphone 6 plus) – chyj4747
? также какие методы вы пробовали, вероятно, если вы находитесь на iOS 9 с Cordova 5, вам нужно правильно установить настройку Content-Security-Policy в ваших метатегах в index.html и исключении безопасности Apple App Transport, установленном для http: // pbcc.ca в файле Info plist вашего приложения. –