Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.8K
Visualizações
Why is jQuery Ajax not working in Cordova iOS app

I am building a Cordova app that uses jQuery Ajax to upload images to our server. The uploads were working for a while on both Android and iOS, then after a while they suddenly stopped working on iOS. Now, after a few seconds of trying to access a website, the request fails and I get an error message, which isn't much help. The error is like the following:

readyState: 0
status: 0
statusText: "error"

My code is:

    $.ajax("http://testapi.com/api", {
        data: submission,
        processData: false,
        contentType: false,
        method: "POST",
        // submission was successful
        success(data) {
          if (JSON.parse(data).success) {
            // backend validated and accepted submission
          } else {
            // backend rejected submission due to validation errors
          }
        },
        // submission failed
        // eslint-disable-next-line no-unused-vars
        error(xhr, text, error) {
          alert(
            JSON.stringify(xhr) + "  " + text + " " + JSON.stringify(error)
          );
        }
      });

My Content Security Policy, in index.html is:

<meta http-equiv="Content-Security-Policy" content="default-src * blob: gap://* file: http: https: ; style-src 'self' 'unsafe-inline'; script-src * blob: file: 'unsafe-inline' 'unsafe-eval' http: https: ; img-src 'self' data: blob: file: ; media-src * blob: file:  http: https: ;"

And config.xml is: `

    <config-file parent="NSCameraUsageDescription" target="*-Info.plist">
        <string>World Bee Count needs access to your camera and photo library</string>
    </config-file>
    <edit-config file="*-Info.plist" overwrite="true" target="NSLocationWhenInUseUsageDescription">
        <string>need location access to find things nearby</string>
    </edit-config>
    <edit-config file="*-Info.plist" overwrite="true" target="NSLocationAlwaysAndWhenInUseUsageDescription">
        <string>need location access to find things nearby</string>
    </edit-config>
    <string file="*-Info.plist" overwrite="true" target="NSLocationAlwaysUsageDescription">
        <string>need location access to find things nearby</string>
    </string>
    <config-file parent="NSPhotoLibraryUsageDescription" target="*-Info.plist">
        <string>World Bee Count needs access to your camera and photo library</string>
    </config-file>
    <preference name="StatusBarOverlaysWebView" value="false" />
    <preference name="StatusBarBackgroundColor" value="#2D81C1" />
    <preference name="Fullscreen" value="true" />
    <feature name="CDVWKWebViewEngine">
        <param name="ios-package" value="CDVWKWebViewEngine" />
    </feature>
    <preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
    <preference name="WKWebViewOnly" value="true" />
</platform>
<engine name="ios" spec="5.1.0" />
<plugin name="cordova-plugin-geolocation" />
<plugin name="cordova-plugin-device" />
<plugin name="cordova-plugin-file" />
<plugin name="cordova-plugin-filepath" />
<plugin name="cordova-plugin-whitelist" />
<plugin name="cordova-plugin-add-swift-support" />
<plugin name="com.subitolabs.android.cordova.galleryapi" spec="https://github.com/Collaborne/cordova-gallery-api.git"></plugin>
<plugin name="cordova.plugins.diagnostic" />
<plugin name="cordova-plugin-android-permissions" />
<plugin name="cordova-plugin-splashscreen" source="npm" />
<plugin name="cordova-plugin-camera-preview"></plugin>
<plugin name="cordova-plugin-wkwebview-engine" spec="~1.2.1" />
<plugin name="cordova-plugin-screen-orientation" spec="~3.0.2" />`

<access origin="*" />
<allow-intent href="*" />
<allow-navigation href="*" />

I am running this on iOS 13 and using PhoneGap build

My problem is most similar to this Ajax Not working in IOS 9.0 Cordova

I tried updating my config.xml according to this question But it doesn't seem to be working

Any help is would be very much appreciated, I've been working on this for hours and can't seem to get anywhere

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

OK, I found the problem was because of a recent update from UIWebView to WKWebView, which was breaking the Ajax code. I added the cordova-plugin-wkwebview-file-xhr plugin to my project as described in the documentation. I also removed the version spec on the WKWebView engine plugin. My config.xml was edited to include the following:

<plugin name="cordova-plugin-wkwebview-engine" />
<plugin name="cordova-plugin-wkwebview-file-xhr" spec="~2.1.4" />

And under

<platform name="ios">
....
<preference name="AllowUntrustedCerts" value="on" />
<preference name="InterceptRemoteRequests" value="all" />
<preference name="NativeXHRLogging" value="full" />

I tried various combinations of the preferences, but only this combination worked. However, NativeXHRLogging could be disabled as it didn't seem to matter. After this everything started working once again

over 4 years ago · Santiago Trujillo Relatório

0

I had the same problem when building with Cordova IOS 6.1.1.

I tried above solution but got build errors with -engine as mentioned.

I removed -engine and just used the latest file-xhr and it worked.

Just use the following plugin, worked with or without the above mentioned preferences.

<plugin name="cordova-plugin-wkwebview-file-xhr" source="npm" version="3.0.0" /> 
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda