我正在尝试通过json将图像坐标传递给应该更新数据库的php文件。 我在jquery中有这个:
var coords=[];
var coord = $(this).position();
var item = { coordTop: coord.top, coordLeft: coord.left };
coords.push(item);
var order = { coords: coords };
$.ajax({
type: "POST",
data : +$.toJSON(order),
url: "updatecoords.php",
success: function(response){
$("#respond").html('<div class="success">X and Y Coordinates
Saved</div>').hide().fadeIn(1000);
setTimeout(function(){
$('#respond').fadeOut(1000);
}, 2000);
}
});
这就是updatecoords.php的样子:
<?php
$db = Loader::db();
$data = json_decode($_POST['data']);
foreach($data->coords as $item) {
$coord_X = preg_replace('/[^\d\s]/', '', $item->coordTop);
$coord_Y = preg_replace('/[^\d\s]/', '', $item->coordLeft);
$x_coord = mysql_real_escape_string($coord_X);
$y_coord = mysql_real_escape_string($coord_Y);
$db->Execute("UPDATE coords SET x_pos = '$x_coord', y_pos = '$y_coord'");
}
?>
成功消息显示来自javascript,但数据库中没有更新? 有什么想法吗?
答案 0 :(得分:0)
你在$ .toJSON之前有一个+。这意味着它返回的json字符串将转换为整数 - 可能是0或NaN。
答案 1 :(得分:0)
Alex是对的,但您也可以从preg_replace模式中取出引号。 PHP自然地使用/.../斜杠来“引用”正则表达式。
答案 2 :(得分:0)
试试这个
UPDATE coords SET x_pos = '".$x_coord."', y_pos = '".$y_coord."'
并在此处查看如何使用toJSON
编辑:
试试这个
$.ajax({
type: "POST",
data : { coordTop: coord.top, coordLeft: coord.left ,coords: coords },
并在第二个代码中执行此操作
$data = json_decode($_POST['data']);
$coordTop = mysql_real_escape_string($_POST['coordTop']);
$coordLeft = mysql_real_escape_string($_POST['coordLeft']);
$coords = mysql_real_escape_string($_POST['coords']);
foreach(.........
.....
.....
然后使用那些变量$ coordTop,$ coordLeft,$ coords
答案 3 :(得分:0)
感谢您的帮助,但这似乎可以解决问题......
在javascript中:
$.post('updatecoords.php', 'data='+$.toJSON(order), function(response){ alert (response + mydata);
在Updatecoords.php中:
$data = json_decode(stripcslashes($_POST['data']));