将json传递给php并更新mysql

时间:2012-12-03 08:18:46

标签: php mysql json

我正在尝试通过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,但数据库中没有更新? 有什么想法吗?

4 个答案:

答案 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']));