Ajax-запрос не отправляет $ _POST правильно - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь разработать приложение для Android с использованием php, jquery, mysql и phonegap.

Среда Phonegap не позволяет мне использовать php, но я могу найти его на своем сервере и запрашивать данные из базы данныхс аяксом.

Я могу делать простые запросы, но когда я использую переменную, взятую из $_POST, она не работает, точно так же, как isset($_POST['any_var']) returns false, но если я делаю isset($_POST) returns true, поэтому я думаю, что у меня естьневерно dataString.

Я новичок в разработке такого рода подсказок.

<script>
     $(document).ready(function()
         {
         $("#login").click(function(){
         var nombre=$("#nombre").val();
         var pass=$("#pass").val();

         var dataString= "nombre="+nombre+"&pass="+pass+"&login=true";
         if($.trim(nombre).length>0 & $.trim(pass).length>0){
             $.ajax({
                 type: "POST",
                 url:"https://crm.inter-web.es/app/json.php",
                 data: dataString,
                 crossDomain: true,
                 cache: false,
                 beforeSend: function(){ $("#login").val('Conectando...');
            },
            success: function(data){    
                return data;
            },
            error: function(jqXHR, textStatus, errorThrown){ alert(errorThrown);}
         });


            var url="https://crm.inter-web.es/app/json.php";
            $.getJSON(url, function(track){
                     console.log(track);
                     $(".list").append("<li>Nombre "+track['nombre']+"</li>");
                     $(".list").append("<li>Pass "+track['pass']+"</li>");
                });
         }return false;

         });
         });
 </script>

Код PHP:

<?php
//server code
include "db.php";
if (isset($_POST['login'])) {
    $q=mysqli_query($con,"select nombre, pass from usuarios where nombre='".$_POST['nombre']."'");
    $datos=mysqli_fetch_all($q, MYSQLI_ASSOC);
    $num=mysqli_num_rows($q);

    $json=json_encode($datos);

    echo $json;
}else{
    $q=mysqli_query($con,"select * from clientes where id_cliente='62' ");
    $datos=mysqli_fetch_array($q, MYSQLI_ASSOC);
    $num=mysqli_num_rows($q);
    // var_dump($datos);
    // for ($i=0; $i < $num ; $i++) { 
    //      echo $datos[$i][0]."<br>";
    // }
    $json=json_encode($datos);
    // mkdir("./json/");
    // $fp=fopen("json/json.json", "w+");
    // fwrite($fp,$json);
    echo $json;
}


?>

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Наконец, я сделал это с помощью GET вместо POST, мой первый код был избыточным, я сделал 2 запроса к серверу:

 $.ajax({
             type: "POST",
             url:"https://crm.inter-web.es/app/json.php",
             data: dataString,
             crossDomain: true,
             cache: false,
             beforeSend: function(){ $("#login").val('Conectando...');
        },
        success: function(data){    
            return data;
        },
        error: function(jqXHR, textStatus, errorThrown){ alert(errorThrown);}
     });

AND:

$.getJSON(url, function(track){
                 console.log(track);
                 $(".list").append("<li>Nombre "+track['nombre']+"</li>");
                 $(".list").append("<li>Pass "+track['pass']+"</li>");
            });

Iизмените URL с параметрами GET вторым способом ("https://url? name = name & pass = pass "), и он работает нормально.

0 голосов
/ 26 февраля 2019

Вместо того, чтобы пытаться отформатировать «dataString» ... Я предлагаю вам использовать объект:

dataObject = {
  nombre: $("#nombre").val(),
  pass: $("#pass").val(),
  login: true,
}

А в ajax:

$.ajax({
   type: "POST",
   url:"https://crm.inter-web.es/app/json.php",
   data: dataObject,
   // ...
   success: function(data){    
            // return data;  // That line does nothing.
            console.log(data);
        },
...