0

背景画像を複製するために、次のjQueryAJAXがあります。情報を効果的に元のページに戻す方法に困惑しています。これが「'#dupBtn」のクリックで送信するAJAXです...

//DUPLICATE BACKGROUND      
$('#dupBtn').click(function() {
    jQuery.ajax({
            type: "POST",
            dataType:'json',
            url: "../system/bgUpdate.php",
            data: {
                "user":<?= $_POST['user'] ?>,
                "bgID":bgID,
                "refID2":<?= $_POST['refID2'] ?>,
                "refTable":"<?= $_POST['refTable'] ?>",
                "bgTitle":($('#bgTitle').val()),
                "path":path,
                "bgColor":bgColor,
                "bgPoz":bgPoz,
                "bgRepeat":bgRepeat,
                "attach":attach
                }
        });
});

PHPページbgUpdate.phpの基本的なMySQLクエリは次のとおりです。

mysql_query("INSERT INTO backgrounds (user,title,path,bgColor,bgPosition,bgRepeat,bgAttachment) VALUES ('".$_POST['user']."','$title','".$_POST['path']."','$bgColor','".$_POST['bgPoz']."','$rt','$attach')");

$bgIDnew = mysql_insert_id();

私がやりたいのは、MySQLエントリが正常に実行されたときに元のページで次のコードを起動し、MySQLPHPページから「$bgIDnew」を動的にキャッチすることです。

$('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>');
4

3 に答える 3

1

jQuery.ajax()success使用できるコールバックとして機能するプロパティがあります。もう1つはcomplete、リクエストが成功したかどうかに関係なく発生するものです。

jQuery.ajax({
  /* your stuff here */
  success: function(response) {
    $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>');
  }
});
于 2012-10-17T00:34:45.403 に答える
1

ロジックは、ajaxリクエストの成功コールバック関数で記述できます。

これは、ajaxリクエストが正常に返されたときに発生します。

success: function(response) {
    $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>');
  }

これをajaxリクエストに追加してください...

于 2012-10-17T00:35:10.827 に答える
1

これは、関数のsuccess属性を使用して実行できます。.ajax()

$('#dupBtn').click(function() {
    jQuery.ajax({
        type: "POST",
        dataType:'json',
        url: "../system/bgUpdate.php",
        data: {
            ...
            },
        success:
            function(response)
            {
                $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=<?=$bgIDnew?>');
            }
    });
});

それはその一部にすぎません...残りの半分は、PHPがjQueryが「成功した」呼び出しとして理解できるものを返す必要があるということです。私の好みは、HTTPステータスコードを使用することです。あなたの場合、PHPスクリプトは、200成功した場合にコードを返す必要があります。それ以外の場合は、範囲内の何かを返す必要があり400ます。(ちなみに、jQueryでエラーとは別に何かを実行したい場合は、のerrorプロパティを使用できます.ajax()。)

ただし、サーバーからクライアント側のスクリプトにデータを返す必要がある場合、PHPは次のよ​​うにその情報を出力できます。

mysql_query("INSERT INTO backgrounds (user,title,path,bgColor,bgPosition,bgRepeat,bgAttachment) VALUES ('".$_POST['user']."','$title','".$_POST['path']."','$bgColor','".$_POST['bgPoz']."','$rt','$attach')");

$bgIDnew = mysql_insert_id();
// Best practice to keep it in some sort of understandable format
// Here, we'll put it in an associative array:
$response = array('id' => $bgIDnew);
print_r(json_encode($response));

このPHPスクリプトは、$ response変数のJSON表現をajax()メソッドに送り返します。応答dataTypeをJSONとして読み取るようにajax()メソッドを既に構成しているので、responseパラメーターの読み取り方法をすでに知っています...つまり、成功関数は次のようになります。

success:
    function(response)
    {
        $('#bgPickerBox').load('../dialog/bgPickerAlbums.php?album=' + response.id);
    }
于 2012-10-17T00:35:12.153 に答える