0

こんにちは、私はこの簡単なコードを持っています:

var datastring="123";
$.ajax({ 
        url: 'actualizarimagen.php',
        type: 'post',
        dataType: 'text',
        data: datastring,
        cache: false,
        success: function(response){
            $('.msg1').html(response);

         },
        error: function(response){
            $('.msg1').html(response);
         }

    });

そして actualizarimagen.php では:

$desc_larga = print('<pre>') & print_R($_POST) & print('</pre>');
$insertSQL = sprintf("INSERT INTO prueba (texto) VALUES ($desc_larga)");

成功メッセージが表示されますが、データベースでは常に 1 が保存されます。dataType、成功、エラー、完全な関数のすべてを変更しようとしましたが、機能しません。私は検索していましたが、答えは役に立ちませんでした。

ありがとう。

編集:応答を追加

4

7 に答える 7

5

次のようにエンコードdatastringされたデータが含まれている必要がありますapplication/x-www-form-urlencoded

例えば:var datastring="foo=123";

文字列をjQueryにまったく渡さない方がよいでしょう。オブジェクトを渡して、エンコーディングを処理させます。

例えば:data: { "foo": "123" }

于 2012-05-17T16:39:45.507 に答える
1

データを送信するには、従うべき形式があります。好き

var datastring="var1=123&var2=abcd";

また

var datastring=[{name:'var1',value:123},{name:'var2',value:'abcd'}];

2番目の形式(オブジェクト名の値の配列)は<input type="text" name="var1" value="123">、html入力要素に投稿される名前と値がある場合のようなものです。

次に、次の方法で値を取得できます。

$_POST['var1']  

また

$_POST['var2']  
于 2012-05-17T16:37:58.270 に答える
1

これを簡単に実現する例は次のとおりです。

JS:

var datastring="123";

$.post('actualizarimagen.php', { datastring:datastring }, function(data){
     if(data != 0){
        $('.msg1').html('correcto');
     } else {
        $('.msg1').html('error');
     } 
});

あなたの actualizarimagen.php で:

if($_POST() && isset($_POST['datastring'])){

/* Connect to DB */
$link = mysql_connect('server', 'user', 'pwd');
if (!$link) {
    // No connection
    print(0);
    exit();
}

$db = mysql_select_db('db', $link);
if (!$db) {
    // DB selection error
    print(0);
    exit();
}

/* Sanitize the value */
$datastring = mysql_real_escape_string($_POST['datastring']);

// I don't understand here what you tried to do with $dec_larga but this is what I thought
$desc_larga = "<pre>".$datastring."</pre>";

/* Insert to DB */
$sql = "INSERT INTO prueba (texto) VALUES ('$desc_larga')";

if(mysql_query($sql,$link)){
    // Everything is Ok at this point
    print(1);
} else {
    // Error happened in your SQL query
    print(0);
}

}
于 2012-05-17T16:57:03.507 に答える
1

データ オブジェクト、文字列

サーバーに送信されるデータ。まだ文字列でない場合は、クエリ文字列に変換されます。GET リクエストの URL に追加されます。この自動処理を防ぐには、processData オプションを参照してください。オブジェクトはキーと値のペアである必要があります。value が配列の場合、jQuery は従来の設定 (以下で説明) の値に基づいて、同じキーで複数の値をシリアル化します。

サーバーに 123 を送信しているだけです。

それは次のようなものでなければなりません

var datastring="myField=123";

また

var datastring = {"myField" : 123 };

そしてPHPでそれを読むでしょう

$_POST["myField"]  
于 2012-05-17T16:41:39.257 に答える
0

ajax呼び出しで:

data: my_var : datastring,

PHPで:

$desc_larga = '<pre>'.$_POST['my_var'].'</pre>';
于 2012-05-17T16:40:16.397 に答える
0
var datastring = "123";
$.ajax({ 
   url: 'actualizarimagen.php',
   type: 'post',
   dataType: 'text',
   data: {data : datastring},
   cache: false
}).always(function(response) {
   $('.msg1').html(response);
});

そしてactualizarimagen.phpで:

$desc_larga = '<pre>'.$_POST['data'].'</pre>';
$query =  '"INSERT INTO prueba (texto) VALUES ('.$desc_larga.')"';
于 2012-05-17T16:49:45.723 に答える
0

交換してみてください

type: "post",

type: "POST",

データ文字列は次のようになります。

single=Single&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio1

ここで説明されているように:

http://api.jquery.com/serialize/

于 2012-05-17T16:42:10.230 に答える