AJAX、JSON和PHP返回值问题
我试图编写一个脚本,将geolocation的lat和lng作为数组传递给PHP,并使用jqueryajax向客户端返回一个值。我能找到的最好的解决方案是JSON。我下面的脚本返回空值,原因我不知道 index.html 以下是我点击浏览器弹出的共享位置按钮后得到的结果AJAX、JSON和PHP返回值问题,php,ajax,json,Php,Ajax,Json,我试图编写一个脚本,将geolocation的lat和lng作为数组传递给PHP,并使用jqueryajax向客户端返回一个值。我能找到的最好的解决方案是JSON。我下面的脚本返回空值,原因我不知道 index.html 以下是我点击浏览器弹出的共享位置按钮后得到的结果 Latitude: sdf Longitude: sdfsd 如果该行: data: { json: JSON.stringify(latlng) }, 不指定currloc作为参数 i、 e 如果该行: d
Latitude: sdf
Longitude: sdfsd
如果该行:
data: { json: JSON.stringify(latlng) },
不指定currloc作为参数
i、 e
如果该行:
data: { json: JSON.stringify(latlng) },
不指定currloc作为参数
i、 e
只需搜索“sdfsd”或sdfsd和“sdf”或sdf即可
您将自己找到问题的解决方案。只要尝试搜索“sdfsd”或sdfsd以及“sdf”或sdf即可 您将自己找到问题的解决方案。这是您发送和接收JSON数据的方式 这就是发送和接收JSON数据的方式 试试这个
$currloc = json_decode($_POST['json'], true);
反而
$currloc = json_decode($_POST['latlng'], true);
或者试试这个脚本
function showPosition(position) {
$.ajax({
type: "POST",
url: "libs/filterstores.php",
data: {"lat":position.coords.latitude, "lng":position.coords.longitude},
dataType: "json",
success: function(data){
$('#geoloc').html("Latitude: " + data.lat + "<br />Longitude: " + data.lng);
}
});
}
希望它能有所帮助试试这个
$currloc = json_decode($_POST['json'], true);
反而
$currloc = json_decode($_POST['latlng'], true);
或者试试这个脚本
function showPosition(position) {
$.ajax({
type: "POST",
url: "libs/filterstores.php",
data: {"lat":position.coords.latitude, "lng":position.coords.longitude},
dataType: "json",
success: function(data){
$('#geoloc').html("Latitude: " + data.lat + "<br />Longitude: " + data.lng);
}
});
}
希望它能有所帮助我认为您在AJAX函数中使用了双重json编码。若在编码时出现问题,JSON函数将给您一个null作为答案。您只需在不进行json编码的情况下传递字符串,它肯定会工作:
function showPosition(position) {
$.ajax({
type: "POST",
url: "libs/filterstores.php",
data: { lat:position.coords.latitude, lng:position.coords.longitude },
dataType: "json",
success: function(data){
$('#geoloc').html("Latitude: " + data.lat + "<br />Longitude: " + data.lng);
}
});
}
我认为您正在AJAX函数中进行双重json编码。若在编码时出现问题,JSON函数将给您一个null作为答案。您只需在不进行json编码的情况下传递字符串,它肯定会工作:
function showPosition(position) {
$.ajax({
type: "POST",
url: "libs/filterstores.php",
data: { lat:position.coords.latitude, lng:position.coords.longitude },
dataType: "json",
success: function(data){
$('#geoloc').html("Latitude: " + data.lat + "<br />Longitude: " + data.lng);
}
});
}
你能再具体一点吗?例如,返回null的是什么。您正在显示一段Jquery。有什么东西被执行了吗?例如,检查chrome中的一些开发工具f12以查看您的请求,执行一些console.log操作以查看您的代码是否实际运行。然后将调试信息添加到问题中,而不是注释中!记录php脚本的执行情况。请参阅$_POST['currloc']和$currloc在json_decode.AFAIK之后的内容,如果您使用datatype:json,JQuery将自动对您提供的数据进行json编码。不需要你自己做。你能说得更具体一点吗?例如,返回null的是什么。您正在显示一段Jquery。有什么东西被执行了吗?例如,检查chrome中的一些开发工具f12以查看您的请求,执行一些console.log操作以查看您的代码是否实际运行。然后将调试信息添加到问题中,而不是注释中!记录php脚本的执行情况。请参阅$_POST['currloc']和$currloc在json_decode.AFAIK之后的内容,如果您使用datatype:json,JQuery将自动对您提供的数据进行json编码。不需要自己做。嗨,斯蒂芬,谢谢你的反馈。我已经试过了,但它仍然显示为空,如上所述。@Wei您是否在成功中尝试了console.logdata?是否返回了响应?其次,尝试添加类似的内容:error:functionxhr,ts,et{$'geoloc'.htmlts+''+et;}@Manju-Hello Manju,正如我前面提到的,它为lat和lng返回Null。谢谢你好,斯蒂芬,谢谢你的反馈。我已经试过了,但它仍然显示为空,如上所述。@Wei您是否在成功中尝试了console.logdata?是否返回了响应?其次,尝试添加类似的内容:error:functionxhr,ts,et{$'geoloc'.htmlts+''+et;}@Manju-Hello Manju,正如我前面提到的,它为lat和lng返回Null。谢谢,假设对libs/filterstores.php的请求成功了吗?发送请求的方式似乎存在问题。我已尝试更改$stores=array'lat'=>$currloc['lat'],'lng'=>$currloc['lng'];to$stores=数组'lat'=>'test lat','lng'=>'test lng';而且它确实按预期返回。它必须介于从客户端传递到服务器端之间,假设对libs/filterstores.php的请求成功了吗?发送请求的方式似乎存在问题。我已尝试更改$stores=array'lat'=>$currloc['lat'],'lng'=>$currloc['lng'];to$stores=数组'lat'=>'test lat','lng'=>'test lng';而且它确实按预期返回。它必须介于从客户端传递到服务器端之前尝试过这一点和再次尝试之间。不起作用。谢谢你以前试过了,现在又试了一次。不起作用。谢谢你好,非常感谢你的回答!这就解决了问题!我认为在传递到PHP时必须明确指定JSON,因此我以这种格式包含contentType和数据。此外,我还希望学习如何将其作为JSON数组传递,这就是为什么我要按照之前发布的方式进行编码。但在这种情况下,一切都会很好!我会四处看看,看看是否能找到一些关于如何将JSON数组传递给PHP的建议。再次感谢乔科!万分感谢@如果您想以JSON数组的形式传递数据,请查看我的解决方案:您好,非常感谢
答案太多了!这就解决了问题!我认为在传递到PHP时必须明确指定JSON,因此我以这种格式包含contentType和数据。此外,我还希望学习如何将其作为JSON数组传递,这就是为什么我要按照之前发布的方式进行编码。但在这种情况下,一切都会很好!我会四处看看,看看是否能找到一些关于如何将JSON数组传递给PHP的建议。再次感谢乔科!万分感谢@如果要以JSON数组形式传递数据,请检查我的解决方案:
function showPosition(position) {
$.ajax({
type: "POST",
url: "libs/filterstores.php",
data: { lat:position.coords.latitude, lng:position.coords.longitude },
dataType: "json",
success: function(data){
$('#geoloc').html("Latitude: " + data.lat + "<br />Longitude: " + data.lng);
}
});
}
$lat = $_POST['lat'];
$lng = $_POST['lng'];
$stores = array('lat'=>$lat,'lng'=>$lng);
echo json_encode($stores);