Javascript 如何在jquery中分离$.post方法中的两个或多个返回变量?
我需要分离从服务器获得的两个变量,并使用$.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', '
$(".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
});