2

データベースを更新する必要があるphpファイルにjson経由で画像座標を渡そうとしています。私はこれを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

4 に答える 4

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 }, 

そして2番目のコードでこれを行います

   $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を使用します

于 2012-12-03T08:33:18.813 に答える
0

$.toJSONの前に+があります。返されるjson文字列が整数(おそらく0またはNaN)に変換されることを意味します。

于 2012-12-03T08:24:17.373 に答える
0

アレックスの言うとおりですが、preg_replace パターンから引用符を取り除くこともできます。PHP は通常、正規表現を「引用」するために /.../ スラッシュを使用します。

于 2012-12-03T08:28:52.047 に答える
0

助けてくれてありがとう、しかしこれはうまくいくように見えた....

JavaScript の場合:

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

Updatecoords.php で:

$data = json_decode(stripcslashes($_POST['data']));  
于 2012-12-07T22:02:58.977 に答える