Javascript 如何在jquery中分离$.post方法中的两个或多个返回变量?

Javascript 如何在jquery中分离$.post方法中的两个或多个返回变量?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我需要分离从服务器获得的两个变量,并使用$.post方法。但当我这样做的时候,我会从这个方法中得到混合值。这是密码 $(".spot_me").click(function() { var idea = $(this).attr("id"); var idea1 = $(this).attr("data"); alert(idea); alert(idea1); $.post('spot_me.php', '

我需要分离从服务器获得的两个变量,并使用$.post方法。但当我这样做的时候,我会从这个方法中得到混合值。这是密码

$(".spot_me").click(function()
    {
        var idea = $(this).attr("id");
        var idea1 = $(this).attr("data");
        alert(idea);
        alert(idea1);
        $.post('spot_me.php', 'val=' + idea + '&tim=' + idea1, function (data)
        {
            alert(data);
        });
    });
这里var id是一个用户id。我希望得到这个用户存储在数据库中的坐标。我的abc.php的php代码是

<?php
session_start();
$value = $_POST['val'];
$value1 = $_POST['tim'];
$con=mysqli_connect("localhost","root","******","anurag");
// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result2 = mysqli_query($con,"SELECT latitude,longitude FROM notifications WHERE uid='$value' AND time='$value1' ");
if(!$result2)
{
    echo "Error in query";
}
else
{
    $row = mysqli_fetch_array($result2);
    $lat = $row['latitude'];
    $lon = $row['longitude'];
    echo $lat;
    echo $lon;
}

  • 选择响应模式-可能是json(我的首选)或xml
  • 使用服务器代码构造响应
  • 使用jQuery解析该响应,分别使用jQuery.parseXML()或jQuery.parseJSON()解析json和xml

  • 您将使用JSON在两种语言之间进行通信

    您的PHP将把数组转换为JSON:

    else
    {
        $row = mysqli_fetch_array($result2);
        echo json_encode($row);
    }
    
    您的javascript将把
    数据
    视为一个对象,因为您已经告诉
    .post()
    函数期望
    json

       var post_str = 'val=' + idea + '&tim=' + idea1;
       $.post('spot_me.php', post_str, function (data)
        {
            alert(data.latitude);
            alert(data.longitude);
        }, 'json');
    
    在PHP

    在jQuery

    $.post('spot_me.php', 'val=' + idea + '&tim=' + idea1, function (data)
    {
        var response = jQuery.parseJSON(data);
        alert(response.latitude);
        alert(response.longitude);
    });
    

    这只是一个如何实现的指标,没有经过测试。

    您可以通过将输出返回为JSon,然后用Javascript解析JSon来实现

    在PHP文件中,执行以下操作:(而不是返回两个变量)

    在Jquery Ajax代码中,使用JSON解析方法返回响应

     var obj = $.parseJSON(data );
     alert( obj.latitude)
     alert( obj.longitude)
    
    //从服务器

    $row = mysqli_fetch_array($result2);
    return json_encode($row);
    
    //在客户身上

    var dataasjson = $.parseJSON(data);
    $.each(dataasjson, function(index, element) {
             element.name //this is your label i.e databse field name as key  
             dataasjson[element.name] //this is your long/lat value
            });
    

    我知道的任何语言都不能返回超过1个值。最好的方法是,您可以从PHP将2个值转换为json字符串
    json_encode
    ,在jQuery中,您可以解码字符串以获得这两个值。如果您能为我提供代码,这将非常有用。我以前从未使用过json,所以我对此一无所知:(请你提供一个代码。我以前从未使用过json。我不知道怎么做:({“lat”:“30”,“lon”:“34”}将是json结构查找json_encode。有了它,你可以将数组转换为json字符串+1。在我键入时,你发布了一个比我更好的解决方案:)
    $row = mysqli_fetch_array($result2);
    return json_encode($row);
    
    var dataasjson = $.parseJSON(data);
    $.each(dataasjson, function(index, element) {
             element.name //this is your label i.e databse field name as key  
             dataasjson[element.name] //this is your long/lat value
            });