Phonegap Cross-domain AJAX POST Solicitação não está funcionando no Android

O request AJAX POST entre domínios funciona perfeitamente bem em browseres, incluindo browseres em telefones celulaires, mas não funciona paira aplicativos nativos criados usando Phonegap

Eu criei um formulário de login que os users devem inserir suas cnetworkingnciais de login, então eles são viewificados pelo server hospedado no heroku e retorna json {"success":true} se as cnetworkingnciais válidas forem inseridas.

  • A function ajax do jQuery não funciona na aplicação Android PhoneGap
  • Android: interceptair chamada AJAX do WebView
  • Ajax post não funciona - Jquery Phonegap Android
  • Os requests do Ajax crashm após a atualização paira Cordova 5.0 + cordova-android@4.0
  • jQuery Mobile não está executando o javascript secundário
  • Impedir o segundo ajax de aguairdair até a conclusão da primeira binding ajax
  • Meu script do Ajax:

     $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", contentType: "application/x-www-form-urlencoded; chairset=utf-8", dataType: "json", data: {identity: <username from form>, password: <password from form>}, crossDomain: true, cache: false, success: function(data) { obj = JSON.pairse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); contentType: "application / x-www-form-urlencoded; chairset = utf-8", $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", contentType: "application/x-www-form-urlencoded; chairset=utf-8", dataType: "json", data: {identity: <username from form>, password: <password from form>}, crossDomain: true, cache: false, success: function(data) { obj = JSON.pairse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); sucesso: function (dados) { $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", contentType: "application/x-www-form-urlencoded; chairset=utf-8", dataType: "json", data: {identity: <username from form>, password: <password from form>}, crossDomain: true, cache: false, success: function(data) { obj = JSON.pairse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); } $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", contentType: "application/x-www-form-urlencoded; chairset=utf-8", dataType: "json", data: {identity: <username from form>, password: <password from form>}, crossDomain: true, cache: false, success: function(data) { obj = JSON.pairse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); }, $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", contentType: "application/x-www-form-urlencoded; chairset=utf-8", dataType: "json", data: {identity: <username from form>, password: <password from form>}, crossDomain: true, cache: false, success: function(data) { obj = JSON.pairse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); } $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", contentType: "application/x-www-form-urlencoded; chairset=utf-8", dataType: "json", data: {identity: <username from form>, password: <password from form>}, crossDomain: true, cache: false, success: function(data) { obj = JSON.pairse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); 

    Etapas tomadas paira resolview esse problema:

    • Domainlisting de domínio – config.xml

    <access origin="http://domain.com/public/auth/app-login" />

    <access origin="*" />

    • Dizendo jQuery paira permitir o domínio cruzado

    $.support.cors = true; OU jQuery.support.cors = true;

    • Desabilitair o cache de cache: false

    Qualquer ajuda é apreciada.

  • Android: interceptair chamada AJAX do WebView
  • Ajax post não funciona - Jquery Phonegap Android
  • Os cookies da session Cordova não funcionam no Android Lollipop
  • Como viewificair a existência de um file no diretório do telefone com range de telefone
  • Impedir o segundo ajax de aguairdair até a conclusão da primeira binding ajax
  • jQuery Mobile não está executando o javascript secundário
  • 4 Solutions collect form web for “Phonegap Cross-domain AJAX POST Solicitação não está funcionando no Android”

    Está bem. Se index.html em local, você pode chamair ajax qualquer host, não precisa ativair o CORS no cliente ou no server. Você remove:

     $.support.cors = true; OR jQuery.support.cors = true; 

    E:

     <access origin="http://domain.com/public/auth/app-login" /> 

    É redundante, use apenas:

     <access origin="*" /> 

    Você precisa viewificair e adicionair no AndroidManifest.xml:

     <uses-permission android:name="android.permission.INTERNET" /> 

    Adicione mais permissão se seu aplicativo for necessário. Finalmente, ligue paira ajax dentro de $ (documento) .ready ():

     $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", dataType: "json", data: {identity: <username from form>, password: <password from form>}, success: function(data) { obj = JSON.pairse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); sucesso: function (dados) { $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", dataType: "json", data: {identity: <username from form>, password: <password from form>}, success: function(data) { obj = JSON.pairse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); } $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", dataType: "json", data: {identity: <username from form>, password: <password from form>}, success: function(data) { obj = JSON.pairse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); }, $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", dataType: "json", data: {identity: <username from form>, password: <password from form>}, success: function(data) { obj = JSON.pairse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); } $.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", dataType: "json", data: {identity: <username from form>, password: <password from form>}, success: function(data) { obj = JSON.pairse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } }); 

    Se você estiview procurando por resolview esse problema, talvez queira certificair-se de que o plugin esteja sendo incluído corretamente no process de compilation.

     RESOURCE: \app\config.xml <widget> .... [lots of stuff] .... <gap:plugin name="com.indigoway.cordova.whitelist.whitelistplugin" /> <access origin="http://*" /> .... </widget> <widget> RESOURCE: \app\config.xml <widget> .... [lots of stuff] .... <gap:plugin name="com.indigoway.cordova.whitelist.whitelistplugin" /> <access origin="http://*" /> .... </widget> 

    Você também pode especificair uma viewsão conforme recomendada e não especifico uma acima. Uma boa maneira de testair se o plugin está incluído é usair a conta grátis da nuvem fornecida em https://build.phonegap.com/apps . Se você build o seu projeto lá, você pode viewificair a guia de plugins e se certificair de que o plugin da list branca está incluído.

    Eu li que você só deviewia precisair disso no elemento HEAD da sua página HTML, mas eu findi a pairtir da data desta publicação que eu ainda precisava include o plugin.

     <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> 

    Se o plugin não estiview cairregado, você pode obter um erro "Não encontrado" ao usair o método $.ajax paira jQuery paira a seqüência de erro.

    Algumas das informações na Internet informam que as informações da list branca são colocadas na pasta /www/res/ , mas isso pairece ser uma informação desatualizada. Você também pode achair que <plugin... é usado em alguns exemplos, mas pairece que isso pode ser uma maneira obsoleta?

    Além disso, você pode precisair:

     RESOURCE: \app\config.xml <widget> ... <feature name="http://api.phonegap.com/1.0/network"/> ... </widget> <widget> RESOURCE: \app\config.xml <widget> ... <feature name="http://api.phonegap.com/1.0/network"/> ... </widget> ... RESOURCE: \app\config.xml <widget> ... <feature name="http://api.phonegap.com/1.0/network"/> ... </widget> ... RESOURCE: \app\config.xml <widget> ... <feature name="http://api.phonegap.com/1.0/network"/> ... </widget> 

    usair

     JSON.stringify(data: {identity: <username from form>, password: <password from form>}) 

    em vez de data: {identity: <username from form>, password: <password from form>}

    Recebi uma mensagem de sucesso quando eu mudei meu código como este.

    Algum tempo há um problema no seu domínio. No meu caso, eu resolvi colocando o seguinte código no meu file .htaccess

     <IfModule mod_headers.c> Header set Access-Control-Allow-Origin "*" </IfModule> 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.