Php Ajax请求不正确发送$\u POST

Php Ajax请求不正确发送$\u POST,php,jquery,mysql,ajax,phonegap,Php,Jquery,Mysql,Ajax,Phonegap,我正在尝试使用php、jquery、mysql和phonegap开发一个android应用程序 Phonegap环境不允许我使用php,但我可以在我的服务器中找到它,并使用ajax从数据库请求数据 我可以做简单的查询,但当我使用取自$\u POST的变量时,它不起作用,确切地说,isset($\u POST['any\u var'])返回false,但如果我使用isset($\u POST)返回true,那么我认为我的数据字符串不正确 我是这方面的新手,没有任何线索对我有帮助 <scrip

我正在尝试使用php、jquery、mysql和phonegap开发一个android应用程序

Phonegap环境不允许我使用php,但我可以在我的服务器中找到它,并使用ajax从数据库请求数据

我可以做简单的查询,但当我使用取自
$\u POST
的变量时,它不起作用,确切地说,
isset($\u POST['any\u var'])返回false
,但如果我使用
isset($\u POST)返回true
,那么我认为我的
数据字符串不正确

我是这方面的新手,没有任何线索对我有帮助

<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>

$(文档).ready(函数()
{
$(“#登录”)。单击(函数(){
var nombre=$(“#nombre”).val();
var pass=$(“#pass”).val();
var dataString=“nombre=“+nombre+”&pass=“+pass+”&login=true”;
如果($.trim(nombre).length>0和$.trim(pass).length>0){
$.ajax({
类型:“POST”,
url:“https://crm.inter-web.es/app/json.php",
数据:dataString,
跨域:是的,
cache:false,
beforeSend:function(){$(“#login”).val('Conectando…');
},
成功:函数(数据){
返回数据;
},
错误:函数(jqXHR,textStatus,errorhorn){alert(errorhorn);}
});
变量url=”https://crm.inter-web.es/app/json.php";
$.getJSON(url、函数(轨迹){
控制台日志(跟踪);
$(“.list”).append(“
  • Nombre”+曲目['Nombre']+”
  • ”; $(“.list”).append(“
  • Pass”+音轨['Pass']+”
  • ”; }); }返回false; }); });
    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;
    }
    
    
    ?>
    

    而不是尝试格式化“数据字符串”。。。我建议您使用一个对象:

    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);
            },
    

    最后,我用GET代替POST完成了这项工作,我的第一个代码是多余的,我向服务器发出了两个请求:

     $.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);}
         });
    
    以及:

    $.getJSON(url、函数(轨迹){
    控制台日志(跟踪);
    $(“.list”).append(“
  • Nombre”+曲目['Nombre']+”
  • ”; $(“.list”).append(“
  • Pass”+音轨['Pass']+”
  • ”; });

    我用第二种方式(“”)修改了带有GET参数的url,效果很好。

    nombre=“+nombre+”&pass=“+pass+”login=true”
    。你错过了一个&在那里,不是吗?是的,我错过了,完全是我的错。改变它同样的结果,也尝试用json代替字符串。我可能会尝试1)只制作一个对象而不是PHP页面上的字符串
    {“nombre”:nombre,“pass”:pass,“login”:true}
    2)do
    print\r($\u POST)在顶部,这样您就可以看到正在发生的事情,最后3)在AjaxDO
    console.log(数据)中获得成功返回之前。然后您可以在JS控制台中看到PHP返回的内容。我尝试了bouth方法,但$\u POST再次为空。好的,我编辑了。。。在
    success
    回调中,
    返回数据什么也不做。尝试将应该返回的json记录到console.log中。
    
    $.getJSON(url, function(track){
                     console.log(track);
                     $(".list").append("<li>Nombre "+track['nombre']+"</li>");
                     $(".list").append("<li>Pass "+track['pass']+"</li>");
                });