Software Archive
Read-only legacy content
17061 Discussions

$.ajax + json + url externa + JQuery

Regis_M_
Beginner
992 Views

Ola,

Estou usando o AJAX DO JQUERY -> para retornar dados externo.

No ambiente de desenvolvimento funciona OK...  Quando eu gero APK e instalo no tabled/ANDROID, a função não retorna os dados.

Cheguei a conclusão que o apk após ser gerado ele não tem permissão para acesso a internet/externo... 

cheguei colocar estes codigos, mais não tive sucesso: 

<Script src = "intelxdk.js"> </ script>
<Script src = "xhr.js"> </ script>

Alguém tem alguma ideia de como eu libero o acesso externo? Lembrando que é só quando gera o apk e instala no emulador ou direto no dispositivo que da o problema, no ambiente de desenvolvimento funciona BLZ ?

 

$( "#botao_logar" ).click(function() {

$.ajax({

            method: "POST",

            url: "http://meusiteexterno.com.br",
           dataType: "json",
            data: {usuario: "usuario", senha: "senha"}

        }) .success(function(dados){
            alert("Dados2: " + dados.usuario);    
        })
        .fail(function(dados) {
            alert( "error2" + dados.usuario );
        })
        .always(function(dados) {
            alert( "complete2: " + dados.usuario );
        });

});

0 Kudos
6 Replies
Regis_M_
Beginner
992 Views

Hello, I'm using google translator ... if anyone has experienced this problem please, of me a light!

I'm using AJAX THE JQUERY -> to return external data.

In the development environment works OK ... When I generate APK and install the Tabled / ANDROID, the function does not return the data.

I concluded that the apk after being generated it is not allowed to access the Internet / external ...

I got put these codes, most did not succeed:

<Script src = "intelxdk.js"> </ script>
<Script src = "xhr.js"> </ script>
Does anyone have any idea how I release the external access? Remembering that it is only when you generate the apk and install the emulator or directly on the device of the problem, in the development environment works BLZ?

 

$( "#botao_logar" ).click(function() {

$.ajax({

            method: "POST",

            url: "http://meusiteexterno.com.br",
           dataType: "json",
            data: {usuario: "usuario", senha: "senha"}

        }) .success(function(dados){
            alert("Dados2: " + dados.usuario);    
        })
        .fail(function(dados) {
            alert( "error2" + dados.usuario );
        })
        .always(function(dados) {
            alert( "complete2: " + dados.usuario );
        });

});

0 Kudos
Hamilton_Tenório_da_
Valued Contributor I
992 Views

Quais bibliotecas você tem no index.html? Você está usando jquery com appframework?

0 Kudos
Regis_M_
Beginner
992 Views

Ola amilton,

Estou usando o jQuery Mobile 

engrado que no ambiente de desenvolvimetno o sistema funciona normal, somente quando gero o apk e rodo em um emulador ou direto no hardware que ele não funciona! 

falei com um amigo, ele disse que tem que habilitar a aplicação para que ela tenha acesso a internet! Mais não sei como faz isso. Ele falou que faz isso em um arquivo arquivo manifest NATIVO-> mais não faço a minima ideia como fazer...

 

Segue eu cabeçalho:  

 

Google translate
Hello amilton,
I'm using jQuery Mobile
funny that in desenvolvimetno environment the system works normal, only when I generate the apk and squeegee on an emulator or directly on hardware that it does not work!
I spoke with a friend, he dice that have to enable the application to which it has access to internet! most do not know how you do it. He said he does so in a manifest file file NATIVE-> more do not do the slightest idea how to do ...
Here I header:

 

 

<!DOCTYPE html>
<html>
    <head>
        <script src="intelxdk.js" type="text/javascript"></script>
        <script src="xhr.js" type="text/javascript"></script>
        
        <link rel="stylesheet" type="text/css" href="jqm/jquery.mobile-min.css">
        <meta charset="UTF-8">
        <title>Blank App Designer Cordova Web App Project Template</title>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
        <meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1, user-scalable=no">
        <style>
                @-ms-viewport { width: 100vw ; min-zoom: 100% ; zoom: 100% ; }          @viewport { width: 100vw ; min-zoom: 100% zoom: 100% ; }
                @-ms-viewport { user-zoom: fixed ; min-zoom: 100% ; }                   @viewport { user-zoom: fixed ; min-zoom: 100% ; }
        </style>

        <link rel="stylesheet" href="css/app.css">
        <link rel="stylesheet" type="text/css" href="css/index_main.less.css" class="main-less">
        <script src="intelxdk.js"></script>
        <script src="xhr.js"></script>
        <script src="cordova.js" id="xdkJScordova_"></script>
        <script src="js/app.js"></script>
        <script src="js/init-app.js"></script>
        <script src="xdk/init-dev.js"></script>
        <script type="application/javascript" src="lib/jquery.min.js"></script>
        <script type="application/javascript" src="jqm/jquery.mobile-min.js" data-ver="0">  </script>
    <script src="intelxdk.js" type="text/javascript"></script>
        <script type="application/javascript" src="js/funcoes.js"></script>
    </head>

    <body>

 

 

 

0 Kudos
Hamilton_Tenório_da_
Valued Contributor I
992 Views

Regis,

Como você não usa o appframework.js, não é o mesmo problema que tive. Eles não podem estar no mesmo programa (jquery.js e appframework.js) que há conflito no APP (no emulador funciona).

No seu caso, vamos confirmar algumas coisas no Build Setting (Projects):

  • Você marcou o plugin Connection?
  • Você inseriu o * ou o seu domínio no Domain List?

Quando você executa no aparelho dá algum erro ou só não mostra nada?

0 Kudos
Regis_M_
Beginner
992 Views

Hamilton,

Muito Obrigado, eu coloquei o  (  *  ) no   Domain List

E foi...

Valeu... 

0 Kudos
Hebert_C_
Beginner
992 Views

== ENGLISH ====================================

Hi, I have a similar problem. But in my case the code isn't able to exchange data between the app and a PHP aplication on the server not even in the emulaton.
I've been searching for a solution for a while but still I couldn't solve this.

I've already certified that the conection plugin is checked and the domain list is filled just like described above.

here is my index head:


<head>
    <title> title </title>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

    <link rel="stylesheet" href="css/normalize.css">
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    <link rel="stylesheet" href="css/global.css">
    
    <style>
        @-ms-viewport { width: 100vw ; zoom: 100% ; }                           
        @viewport { width: 100vw ; zoom: 100% ; }
        @-ms-viewport { user-zoom: fixed ; }                                    
        @viewport { user-zoom: fixed ; }
    </style>
    
    <script src="bootstrap/js/bootstrap.min.js"></script>
    <script src="js/jquery-1.11.2.min.js"></script>
    <script src="lib/ft/fastclick.js"></script>
    
    <script src="intelxdk.js"></script>         
    <script src="cordova.js"></script>          
    <script src="xhr.js"></script>              

    <script src="js/app.js"></script>
    <script src="js/init-app.js"></script>
    <script src="js/init-dev.js"></script>
    <script src="js/paginaInicial.js"></script>
    <script src="js/login.js"></script>
</head>

===========================================================================================

===========================================================================================

and the code containing the requisition:

var valores = {
        "user"  : $("#iptLoginEntrarUser").val(),
        "senha" : $("#iptLoginEntrarSenha").val()
    };

$.post(url, valores, function(data)
    {
        alert("dentro do post");
        //chama loader
        loader();

        if(data)
        {
            alert("dentro data->post");
            if(data.status === "success")
            {
                alert("dentro data->post SUCCESS");
                
                //salva no dispositivo o dado de login
                var db      = getLocalStorage();
                db.setItem("loginLocal", $("#iptLoginEntrarUser").val());
                
                alert("Login realizado com sucesso!");
                paginaInicial();
            }
            else
            {
                alert("dentro data->post ERROR");
                if(data.desc === "404")
                {
                    alert("Usu�rio ou senha inv�lidos. Tente novamente.");
                }
                else if(data.desc === "empty")
                {
                    alert("Preencha os campos obrigat�rios para continuar.");
                }
                else if(data.desc === "invalid")
                {
                    alert("Preencha corretamente os campos para prosseguir.");
                }
                else
                { alert("Erro ao tentar fazer login. Aguarde alguns instantes e tente novamente."); }

                loginDialog();
            }
        }
    }, "json");

 

Can anybody help me?

 

== PORTUGUES =====================================================================

Olá, estou com um problema parecido em mãos. Mas no meu caso eu não estou conseguindo fazer a troca de dados entre o app e uma aplicação web externa nem mesmo na emulação.

Tenho olhado as possíveis causas mas até o momento nao consegui resolver.

O plugin conection e o domain list estão conforme a sugestão acima. 

Eis o cabeçalho no index:

<head>
    <title> title </title>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

    <link rel="stylesheet" href="css/normalize.css">
    <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
    <link rel="stylesheet" href="css/global.css">
    
    <style>
        @-ms-viewport { width: 100vw ; zoom: 100% ; }                           
        @viewport { width: 100vw ; zoom: 100% ; }
        @-ms-viewport { user-zoom: fixed ; }                                    
        @viewport { user-zoom: fixed ; }
    </style>
    
    <script src="bootstrap/js/bootstrap.min.js"></script>
    <script src="js/jquery-1.11.2.min.js"></script>
    <script src="lib/ft/fastclick.js"></script>
    
    <script src="intelxdk.js"></script>         
    <script src="cordova.js"></script>          
    <script src="xhr.js"></script>              

    <script src="js/app.js"></script>
    <script src="js/init-app.js"></script>
    <script src="js/init-dev.js"></script>
    <script src="js/paginaInicial.js"></script>
    <script src="js/login.js"></script>
</head>

===========================================================================================

===========================================================================================

o codigo onde há a requisição:

var valores = {
        "user"  : $("#iptLoginEntrarUser").val(),
        "senha" : $("#iptLoginEntrarSenha").val()
    };

$.post(url, valores, function(data)
    {
        alert("dentro do post");
        //chama loader
        loader();

        if(data)
        {
            alert("dentro data->post");
            if(data.status === "success")
            {
                alert("dentro data->post SUCCESS");
                
                //salva no dispositivo o dado de login
                var db      = getLocalStorage();
                db.setItem("loginLocal", $("#iptLoginEntrarUser").val());
                
                alert("Login realizado com sucesso!");
                paginaInicial();
            }
            else
            {
                alert("dentro data->post ERROR");
                if(data.desc === "404")
                {
                    alert("Usu�rio ou senha inv�lidos. Tente novamente.");
                }
                else if(data.desc === "empty")
                {
                    alert("Preencha os campos obrigat�rios para continuar.");
                }
                else if(data.desc === "invalid")
                {
                    alert("Preencha corretamente os campos para prosseguir.");
                }
                else
                { alert("Erro ao tentar fazer login. Aguarde alguns instantes e tente novamente."); }

                loginDialog();
            }
        }
    }, "json");

 

Alguém poderia me dar uma ajuda?

0 Kudos
Reply