按顺序将数组值传递给数据库
Pass array value to database with order
我只是按顺序将我的lat,lng传递到mysql数据库。以下是将数据发布到数据库的代码:
for (var i = 0; i < latLngs.length; i++) {
$.post('send.php', {
username: name,
latitude: latLngs[i].lat,
longitude: latLngs[i].lng
}, function(data) {
$('#result').html(data);
});
}
和send.php:
<?php
$name = $_POST['username'];
$lat = array($_POST['latitude']);
$arrlength = count($lat);
$lnt = array($_POST['longitude']);
$link = @mysql_connect("localhost","root","") or die("cannot connect");
@mysql_select_db("beta") or die("cannot select db");
for ($x = 0; $x <$arrlength; $x++) {
$query="insert into belcheer(username,lat, lng) values('$name','$lat[$x]','$lnt[$x]')";
@mysql_query($query) or die("cannot run query");
}
@mysql_close($link);
?>
这是我从用户输入的原始数据,但数据库中的数据没有按正确的顺序排列。我该如何解决这个问题?
更新!当我将数据插入数据库时,它会成倍增加。我的意思是我的数组长度是4,但数据库记录变成了16。为什么会发生这种事?
for ($x = 0; $x <count($lat); $x++){
$query="INSERT INTO belcheer(username,lat, lng) VALUES('user','$lat[$x]','$lng[$x]')";
@mysql_query($query) or die("cannot run query");
}
浏览器使用连接池向服务器发送请求,因此多个帖子/请求将同时发生,服务器可能会首先处理稍后的请求,这就是您所看到的。
只有当每个帖子都在等待上一个帖子完成时,才能强制执行正确的顺序。
由于您还实现了send.php
,所以最好的选择是在一个请求中发送所有数据:
JavaScript
$.post('send.php', { username: name, latLngs: JSON.stringify(latLngs) }, function(data) {
$('#result').html(data);
});
PHP
$latLngs = json_decode($_POST['latLngs']);
// Now you can work with $latLngs array in PHP
您遇到的事实是,这些POST调用是同时执行的——好吧,几乎同时执行——并且由服务器按照发生的顺序进行处理
您需要找到一种方法来确保$.post
调用按您想要的顺序依次进行(一个接一个)。
这可能是因为$.post是异步执行的。这意味着,即使您按顺序提出请求,也不意味着服务器将按照发送请求的顺序接收请求。
最好的选择是发出一个请求,一次发送整个阵列,然后处理阵列服务器端的
将函数转换为同步函数,如下所示:
function sendGeo(latLngs,index){
if (latLngs[index]!== undefined)
{
$.post('send.php', {username:name,
latitude:latLngs[index].lat,
longitude:latLngs[index].lng},
function(data){
$('#result').html(data);
sendGeo(latLngs,index++); //use the callback to send next data
});
}
}
sendGeo(latLngs,0);
相关文章:
- 如何通过php页面将数据库值检索到jquery自动完成框中
- 如何将输入范围的值传递给JS中的变量
- 如何将值传递给wicket中的javascript函数
- 将值传递给jquery创建的输入字段
- 如何在javascript谷歌地图中获取数据库值
- 需要将select标记选项值传递给ajax函数
- 使用Ajax将PHP值传递给javascript
- 将javascript值传递给PHP
- 将javascript值传递给php是正确的方法
- 将不属于表单的HTML页面中的值传递给php页面
- 按钮,用于更改Rails中的数据库值
- Angular,将文本框的动态值传给控制器
- 在key up函数上将文本框值传递给javascript
- 可以't使用ajax调用将值传递给Web服务
- 如何在同一页面上使用windows.location.href将js值传递给php时停止刷新页面
- 多个单选按钮,需要将选定的值传递给javascript
- 将 MSSQL 表值传递给 javascript
- 使用Javascript和Json将选择选项值传递给PHP并从数据库中检索数据
- PHP:如何将数据库值传递给javascript/jquery函数
- 将相同名称的文本框的值传递给jquery,然后传递给php页面,以便将值存储到数据库中