javascript - 从 jQuery AJAX 调用返回信息并在成功时执行其他 jQuery

标签 javascript php jquery ajax

我有以下 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?>');

最佳答案

您可以使用 .ajax() 函数的 success 属性来完成此操作:

$('#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 执行一些与错误分开的操作,您可以使用 .ajax()error 属性。)

但是,如果您需要将数据从服务器返回到客户端脚本,那么您的 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 函数可能如下所示:

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

关于javascript - 从 jQuery AJAX 调用返回信息并在成功时执行其他 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12925460/

相关文章:

javascript - 并非所有在 Array.map() 调用中的 async/await 之后的元素都得到解析

php - 如何修复不断进行的重定向过程?

jquery - bower 错误 : Failed UNABLE_TO_VERIFY_LEAF_SIGNATURE

javascript - 用户缩放或右键单击重置时的谷歌图表事件

javascript - swiper 插件延迟加载大约 30 到 60 秒

javascript - 数据表默认排序(升序/降序)不起作用

Javascript : go back with new parameters

javascript - ajax、php 和 mysql 连接问题

javascript - jquery keyup 函数后,ajax 请求未提交到数据库

javascript - 组件未在简单的 React.js 应用程序中呈现