将json传递给php并更新mysql

I'm trying to pass image coordinates via json to a php file that should update the database. I have this in 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);  
    }
});

This is what updatecoords.php looks like:

<?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'");
}  

?>  

The success message shows from the javascript however nothing gets updated in the database? Any thoughts?

You have a + before $.toJSON. Meaning that the json string it returns will be converted to an integer - probably 0 or NaN.

Alex is right, but you can also take the quotes out from the preg_replace pattern. PHP naturally uses /.../ slashes to "quote" a regular expression.

try this

  UPDATE coords SET x_pos = '".$x_coord."', y_pos = '".$y_coord."'

and look here how to use toJSON

EDIT :

try this

 $.ajax({   
type: "POST",
data : { coordTop:  coord.top, coordLeft: coord.left ,coords: coords }, 

and in second code do this

   $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(.........
  .....
  .....

and then use those variables $coordTop , $coordLeft , $coords

Thanks for the help but this seemed to do the trick....

In javascript:

$.post('updatecoords.php', 'data='+$.toJSON(order), function(response){ alert (response + mydata);

In Updatecoords.php:

$data = json_decode(stripcslashes($_POST['data']));