无法使用 AJAX 将 JS 变量传递给 PHP
Cannot pass JS variable to PHP using AJAX
我正在尝试获取用户的当前位置。
我有 JS 脚本来获取当前的纬度和经度,AJAX 将 js 变量发送到 index.php。
$(document).ready(function() {
if ("geolocation" in navigator){
navigator.geolocation.getCurrentPosition(function(position){
var userLat = position.coords.latitude;
var userLong = position.coords.longitude;
console.log(userLong);
console.log(userLat);
$.ajax({
type: 'POST',
url: 'index.php',
data: {
userLat : userLat,
userLong : userLong
},
success: function(data)
{
console.log(data);
}
});
});
}else{
console.log("Browser doesn't support geolocation!");
}});
然后我在 index.php:
中尝试这样做
echo $_POST['userLat'];
echo $_POST['userLong'];
没有显示任何内容。提前致谢。
可能有助于为 ajax 定义 return 一个 dataType
。
将此添加到您的 ajax
选项列表中
dataType: 'json',
然后在 index.php 中编码并回显一个 json 字符串。删除行
echo $_POST['userLat'];
echo $_POST['userLong'];
将它们替换为
echo json_encode($_POST);
success 函数中的 console.log(data);
应该显示一个包含两个项目的对象:'userlat' 和 'userLong' 以及每个项目的关联值。或者如果 $_POST
有这两个项目,它应该。
如果您希望浏览器屏幕更新,您必须使用 data
并使用它来修改 DOM。
Nothing shows up.
那是正确的你永远不会通过浏览index.php得到任何东西,因为此时没有POST,AJAX是内部显示 index.php 结果的唯一方法是在您从它发送 ajax 调用的页面中。
此时:
success: function(data)
{
console.log(data);
}
您可以控制在何处显示来自 index.php 的数据,例如 alert(data)
或 document.getElementById("someelement").innerHTML=data;
等等。
我正在尝试获取用户的当前位置。
我有 JS 脚本来获取当前的纬度和经度,AJAX 将 js 变量发送到 index.php。
$(document).ready(function() {
if ("geolocation" in navigator){
navigator.geolocation.getCurrentPosition(function(position){
var userLat = position.coords.latitude;
var userLong = position.coords.longitude;
console.log(userLong);
console.log(userLat);
$.ajax({
type: 'POST',
url: 'index.php',
data: {
userLat : userLat,
userLong : userLong
},
success: function(data)
{
console.log(data);
}
});
});
}else{
console.log("Browser doesn't support geolocation!");
}});
然后我在 index.php:
中尝试这样做echo $_POST['userLat'];
echo $_POST['userLong'];
没有显示任何内容。提前致谢。
可能有助于为 ajax 定义 return 一个 dataType
。
将此添加到您的 ajax
选项列表中
dataType: 'json',
然后在 index.php 中编码并回显一个 json 字符串。删除行
echo $_POST['userLat'];
echo $_POST['userLong'];
将它们替换为
echo json_encode($_POST);
success 函数中的 console.log(data);
应该显示一个包含两个项目的对象:'userlat' 和 'userLong' 以及每个项目的关联值。或者如果 $_POST
有这两个项目,它应该。
如果您希望浏览器屏幕更新,您必须使用 data
并使用它来修改 DOM。
Nothing shows up.
那是正确的你永远不会通过浏览index.php得到任何东西,因为此时没有POST,AJAX是内部显示 index.php 结果的唯一方法是在您从它发送 ajax 调用的页面中。
此时:
success: function(data)
{
console.log(data);
}
您可以控制在何处显示来自 index.php 的数据,例如 alert(data)
或 document.getElementById("someelement").innerHTML=data;
等等。