0

我有以下 jQuery AJAX 来复制背景图像。我对如何有效地将信息返回到原始页面感到困惑。这是我点击“'#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 条目后在原始页面上触发以下代码,从 MySQL PHP 页面动态捕获“$bgIDnew”。

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

3 回答 3

1

jQuery.ajax()有一个success可以用作回调的属性。另一个是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 状态码。200在您的情况下,如果成功,您的 PHP 脚本应该返回一个代码;否则,它应该返回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() 方法。您已经将 ajax() 方法配置为将响应数据类型读取为 JSON,因此它已经知道如何读取response参数...这意味着您的成功函数可能如下所示:

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