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

时间:2014-01-14 04:34:43

标签: 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', '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;
}

&GT;

现在我想在参数数据中的jquery $ .post方法中单独获取此lat和lon值。我怎样才能分别获得这些值并且“我希望以$ .POST方法将它们存储在两个不同的变量中”我该怎么做呢

5 个答案:

答案 0 :(得分:1)

您将使用JSON在语言之间进行通信。

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

else
{
    $row = mysqli_fetch_array($result2);
    echo json_encode($row);
}

并且您的javascript会将data视为对象,因为您告诉.post()函数需要json

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

答案 1 :(得分:0)

  1. 选择一种回应方式 - 也许是json(我的偏好)或xml
  2. 使用您的服务器代码构建您的回复
  3. 使用jQuery解析响应,分别使用jQuery.parseXML()或jQuery.parseJSON()分别为json和xml

答案 2 :(得分:0)

在PHP

$row = mysqli_fetch_array($result2);
echo json_encode($row);

在jQuery

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

这只是一个指示哦如何做,而不是测试。

答案 3 :(得分:0)

你可以把输出作为JSon返回,然后在Javascript中解析那个JSON。

在PHP文件中这样做:(而不是返回两个变量)

echo json_encode(array('latitude' => $row['latitude'],'longitude'=> $row['longitude']));

Response will be like this (test values use)
{"latitude":123,"longitude":456}

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

 var obj = $.parseJSON(data );
 alert( obj.latitude)
 alert( obj.longitude)

答案 4 :(得分:0)

//来自服务器

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