关于 ajax 将数据发布到 PHP

Posted

技术标签:

【中文标题】关于 ajax 将数据发布到 PHP【英文标题】:About ajax post data to PHP 【发布时间】:2018-01-23 14:41:25 【问题描述】:

我是 Ajax 的新手,我知道当我想将数据传递给 php 文件时我需要使用 Ajax,但我不确定 Ajax 是否可以像我编写的代码那样使用。如果不能,任何人都可以帮助我吗?因为我想使用 html5 地理位置来获取用户位置。我之前尝试过geoplugin,但我得到的IP总是服务器IP而不是用户IP,我尝试在这里询问geoplugin但没有用。我已经尝试过这个 html5 地理位置来显示我的 lon 和 lat,它是正确的,但我想将变量传递给另一个 PHP 文件以计算从 mysql 获取的数据的最近距离。

在 index.php 中

<script>
$(document).ready(function()
if (navigator.geolocation) 
    navigator.geolocation.getCurrentPosition(showLocation);
 else  
    $('#location').html('Geolocation is not supported by this browser.');

);

function showLocation(position) 
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
$.ajax(
    type:'POST',
    url:'index1.php',
    data:'latitude='+latitude+'&longitude='+longitude
    
);

</script>

在 index1.php 中

<?php
session_start();
$link=mysqli_connect("localhost","id2135226_ukwai1203","ukwai1203");
mysqli_select_db($link,"id2135226_demo");
$lat=$_POST['latitude'];
$lon=$_POST['longitude'];
$sql = "select branch_id,(6371 * 2 * ASIN(SQRT( POWER(SIN(($lat - 
branch_lat)*pi()/180/2),2)+COS($lat*pi()/180 
)*COS(branch_lat*pi()/180)*POWER(SIN(($lon-branch_lon)*pi()/180/2),2)))) 
as 
distance From Branch ORDER BY distance ASC LIMIT 1";
$res=mysqli_query($link,$sql);
while($row=mysqli_fetch_array($res))
$_SESSION['location']=$row['branch_id'];
?>
<script>

window.location="http://ukwai1203.000webhostapp.com/fyp/user/shop.php";
</script>
<?php

?>

【问题讨论】:

Have you watched the AJAX request / response in the browser's developer tools? Have you included the jQuery library in the project? Are there any errors reported? Are you running this on a web-server? @JayBlanchard 没有错误,只是一个空白页,我把这个文件放在一个虚拟主机服务器上 @JayBlanchard 忘记添加库,但添加后仍然是空白页 @JayBlanchardi 将 为什么不应该是空白页?其中唯一的 HTML 是 &lt;script&gt; 元素,您的 JS 只发出 Ajax 请求:它对响应不做任何事情,也不向页面写入任何内容。 【参考方案1】:

将您的代码更改为:

function showLocation(position) 
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
$.ajax(
   method:"POST",
    url:"index1.php",
    data:
   latitude : latitude,
   longitude : longitude
    
  );//ajax end

//function end

考虑使用 Eclipse 之类的 IDE 来帮助您发现缺少的括号等。 并且在通过修改旧代码检查库版本(如 jquery 版本)工作时。

【讨论】:

这读起来像是一个找不同的游戏,而不是一个答案。你改变了什么?为什么要解决问题? (看起来您建议让 jQuery 构建 POST 正文而不是手动执行……这是一个很好的最佳实践,但对解决问题没有帮助)。 @Quentin 在投反对票和发布废话之前请仔细阅读。贴出的代码有不平衡的括号,我认为解决这个问题的方法是使用 IDE 而不是指向它所在的位置。您还可以在代码中找到 cmets 的更改点。 您可以通过说“您的代码中有一个额外的 需要删除”来更清楚地解释这一点。 (这仍然不能解决问题,因为 HTTP 响应仍然被忽略)。 请注意,代码中额外的右括号表示代码之前未手动构造数据的状态。 但是 OP 对响应不感兴趣(他可能应该),因为他正在使用坐标获取分支并将其存储在会话中

以上是关于关于 ajax 将数据发布到 PHP的主要内容,如果未能解决你的问题,请参考以下文章

将ajax数据发布到PHP并返回数据

使用 AJAX + jQuery + PHP 将数据发送到 MySQL

将二进制数据从 jQuery ajax 发送到 PHP

使用 AJAX 将地理位置数据发布到 PHP

将数据数组从表单传递到 ajax 到 PHP 发布文件

如何使用 AJAX 将数据发布到 php 文件 [重复]