在ajax中获取结果后更改目标网址

时间:2017-10-23 19:55:39

标签: javascript php jquery ajax url

我一直在研究stackoverflow,但我还不清楚。我在Jquery中有一个非常适合我的Ajax函数。 这会远程连接到PHP脚本并返回一些结果,在返回这些结果后,我使用相同的表单来处理结果并发布它们,但第二步不再通过AJAX而是通过纯PHP完成。我想第二步也是用AJAX完成的,所以我认为在获得结果之后,AJAX URL将更改为我的第二个PHP脚本(本地存储)所在的地址。

$('[id^="form-busqueda"]').on('submit', function(e) {
        e.preventDefault();
        $.ajax({
            type : 'POST',
            url  : 'https://example.com/script1.php',
            data : $(this).serialize(),
            cache: false,
            beforeSend: function(){
                $('#result').html('<img src="'+pluginUrl+'./assets/img/loading.svg" />');
            }
        }).done(function(data) {
            $('#result').html(data); // GET DATA
            $('[id^="form-busqueda"]').prop('action','?page='+plugin_page_id+'&publicar=si'); // Change the target attr (for second step)
            $('[id^="form-busqueda"]').unbind('submit'); //unbind event
        });
    });

正如您在我的代码中看到的,一旦我得到结果,我就为表单的属性“action”设置了一个目标,这样我就可以使用相同的表单来发布之前获得的结果。

我现在想要的是使用相同的表单但是一旦得到结果,我就更改了ajax URL以处理我的第二个PHP脚本。像这样:

    $('[id^="form-busqueda"]').on('submit', function(e) {
            e.preventDefault();
            $.ajax({
                type : 'POST',
                url  : 'https://example.com/script1.php',
                data : $(this).serialize(),
                cache: false,
                beforeSend: function(){
                    $('#result').html('<img src="'+pluginUrl+'./assets/img/loading.svg" />');
                }
            }).done(function(data) {
                $('#result').html(data); // GET DATA
              $.ajax({
                type : 'POST',
                url  : pluginUrl+'./script2.php',
                data : $(this).serialize(),
                cache: false,
                beforeSend: function(){
                    $('#result').html('<img src="'+pluginUrl+'./assets/img/loading.svg" />');
                }
            }).done(function(data) {
                $('#result').html(data); // GET DATA
            });
                $('[id^="form-busqueda"]').unbind('submit'); //unbind event
            });
        });

我知道语法是错误的,但它或多或少是我想到的,我也在考虑更改表单ID的可能性,然后在新的AJAX函数中处理它,但我不知道是否还有另外一个更优雅的选择。

1 个答案:

答案 0 :(得分:0)

如果你提到的是我认为你的意思,那么这样的事情可能有用(它对我有用但不久前我也不记得我用过的代码)

$('[id^="form-busqueda"]').on('submit', function(e) {
        e.preventDefault();
        $.ajax({
            type : 'POST',
            url  : 'https://example.com/script1.php',
            data : $(this).serialize(),
            cache: false,
            beforeSend: function(){
                $('#result').html('<img src="'+pluginUrl+'./assets/img/loading.svg" />');
            }
            success: //Your code here
        })
});

如果这不起作用或我错了你试图说的话,再问我一次:)