jquery - 如何访问 GET AJAX 请求的 URL?

标签 jquery ajax get forms

我查看了其他一些问题,但我仍然不确定如何实现这一目标。

情况是我有一个复杂的表单,静态工作得很好,但我通过使用 AJAX 请求提交它来“让它变得更好”。

现在页面的 url 不会像以前一样更改为包含参数,但我可以使用 firebug 查看完全限定的 url。

我的目标是获取此网址并创建一个链接到它的按钮,以便用户可以为其添加书签,因为目前搜索结果无法添加书签。

很抱歉,如果这完全重复,但非常感谢任何帮助和建议。

这是我的 AJAX 请求(它们基本相同,但我有两种表单作为一种表单呈现给用户,一个简单搜索和一个切换的高级搜索):

// setup AJAX request for simple search
$simpleform = $('#search');
$simpleform.submit(function() {
    $.ajax($simpleform.attr('action'), {
        data: $simpleform.serialize(),
        dataType: 'html',
        url: 'docsearch.php',
        type: 'GET', 

        beforeSend: function() {
            var $load = $('#loadingmessage');
            $('#search_results').fadeOut(1000);
            $load.hide().fadeIn(1000);

            if (!$load.length)
            {
                $load = $('<div id="loadingmessage">').appendTo($('#placeholder'));
            }

            $load.html('Searching... Please wait...');

            // disable both search buttons
            $('.submit').attr('disabled', 'disabled');
            $('.submit').addClass("disabled");

            $('#advancedsearchbutton').attr('disabled', 'disabled');
            $('#advancedsearchbutton').addClass("disabled");
        },

    success: function(response) {
        // response is the text sent back by server

        // find the search_results div in the response and insert it after the placeholder div
        $(response).find('#search_results').insertAfter($('#placeholder')).fadeIn(1000); 
        // re-initialise lightbox and dataTable plugins
        $('a.lightbox').lightBox();
        $('#test-docs-table').dataTable( {
                "sPaginationType": "full_numbers",
                "sDom": 'Rlfrtip',
                "aoColumns": [
                    null,
                    null,
                    { "sType": "title-numeric" },
                    null
                ]
        });
    },

    complete: function() {
        // hide loading message:
        $('#loadingmessage').fadeOut('slow');

        // enable both search buttons
        $('.submit').removeAttr("disabled");
        $('.submit').removeClass("disabled");

        checkDropdowns();
    }
});

return false; // Cancel default event
});
// end AJAX request

// setup AJAX request for advanced search
$form = $('#advancedsearchform');
$form.submit(function() {
    $.ajax($form.attr('action'), {
        data: $form.serialize(),
        dataType: 'html',
        url: 'docsearch.php',
        type: 'GET', 

        beforeSend: function() {
            var $load = $('#loadingmessage');
            $('#search_results').fadeOut(1000);
            $load.hide().fadeIn(1000);

            if (!$load.length)
            {
                $load = $('<div id="loadingmessage">').appendTo($('#placeholder'));
            }
              $load.html('Searching... Please wait...');

            // disable both search buttons
            $('.submit').attr('disabled', 'disabled');
            $('.submit').addClass("disabled");

            $('#advancedsearchbutton').attr('disabled', 'disabled');
            $('#advancedsearchbutton').addClass("disabled");
        },

    success: function(response) {
        // response is the text sent back by server

        // find the search_results div in the response and insert it after the placeholder div
        $(response).find('#search_results').insertAfter($('#placeholder')).fadeIn(1000); 
        // re-initialise lightbox and dataTable plugins
        $('a.lightbox').lightBox();
        $('#test-docs-table').dataTable( {
                "sPaginationType": "full_numbers",
                "sDom": 'Rlfrtip',
                "aoColumns": [
                    null,
                    null,
                    { "sType": "title-numeric" },
                    null
                ]
        });
    },

    complete: function() {
        // hide loading message:
        $('#loadingmessage').fadeOut('slow');

        // enable both search buttons
        $('.submit').removeAttr("disabled");
        $('.submit').removeClass("disabled");

        $('#advancedsearchbutton').removeAttr("disabled");
        $('#advancedsearchbutton').removeClass("disabled");
    }
});

return false; // Cancel default event
});
// end AJAX request

最佳答案

我不确定为什么这是一个问题。 HTTP 请求的 URL 是 $.get() 的第一个参数。在本例中,它是返回的值

$('#search').attr('action');

$('#advancedsearchform').attr('action');

分别。

也许我在这里遗漏了一些东西?


编辑:

how to utilise the string that is being returned? i.e. to begin with, print it anywhere on the page.

您可以将字符串填充到 jQuery 对象中,然后将其附加到某处:

var action = $('#search').attr('action'),
    $span = $('<span/>', {text: action});

$('#placeholder').after($span);

关于jquery - 如何访问 GET AJAX 请求的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6072793/

相关文章:

javascript - 如何使用 javascript 或 jquery 从 url 参数获取值

jquery - multipart=true 和显示上传百分比之间的plupload 连接

javascript - 编写一个简单的自定义阅读更多关于需要重构的 jquery 的点击功能

jQuery 验证和表单插件

javascript - 使用 Django + Ajax 添加“赞”按钮

java - HTTP 获取请求 - Android - 无法启动 Activity ComponentInfo{

javascript - jquery,为什么id选择器不起作用

jquery - 如何将 withCredentials=true 添加到 Jquery .load() 中?

javascript - GET 参数未传递

AJAX 调用后 jQuery 重新绑定(bind) .submit()