AJAX中的动态/更改变量获取请求

时间:2016-03-02 14:35:18

标签: javascript ajax get

我有一个关于我正在开发的项目的页面,该项目正在尝试使用按钮(有多个)id标记指定的特定值来发出ajax请求。这有效;值成功传递,每次点击都会触发ajax调用。

当我尝试使用不同的按钮再次拨打同一页面时,会重新分配变量,但发送的 GET请求保持不变

如何传递传递给GET请求的NEW变量(在本例中为id)?

function someAJAX(target) {

    var trigger = [target.attr('id')];
    console.log[trigger];

    $.ajax({
        // The URL for the request
        url: "onyxiaMenus/menuBase.php",

        // The data to send (will be converted to a query string)
        data: {
            //class: target.attr("class"),
            tableCall: true,
            sort: trigger,
            sortOrder: 'DESC',
        },

        // Whether this is a POST or GET request
        type: "GET",

        // The type of data we expect back
        //The available data types are text, html, xml, json, jsonp, and script.
        dataType: "html",

        // Code to run if the request succeeds;
        // the response is passed to the function
        success: function (data) {
            console.log("AJAX success!");
            $('#prop').replaceWith(data);

        }
        ,

        // Code to run if the request fails; the raw request and
        // status codes are passed to the function
        error: function (xhr, status, errorThrown) {
            console.log("Sorry, there was a problem!");
            console.log("Error: " + errorThrown);
            console.log("Status: " + status);
            console.dir(xhr);
        }
        ,

        // Code to run regardless of success or failure
        complete: function (xhr, status) {
            console.log("The request is complete!");
            $('#view').prepend(xhr);

        }


    });
}

$(document).ready(function () {

    $(".sort").on( "click", function (e) {
        //e.stopPropagation();
        //e.preventDefault();

        target = $(this);
        //console.log(target.attr("class"));
        console.log(target.attr("id"));


        /* ADD CHILDREN TO ELEMENT*/
        if (target.hasClass('asc')) {
            target.removeClass('asc')
        } else {
            target.addClass('asc')
        }

        /* MANAGE CLASS ADD/REMOVE FOR TARGET AND SIBLINGS */
        if (target.hasClass('btn-primary')) {
        } else {
            target.addClass('btn-primary')
        }

        someAJAX(target);

        target.siblings().removeClass('btn-primary');


    })
});

3 个答案:

答案 0 :(得分:0)

trigger似乎没有在任何地方定义。这是唯一可以在您的请求之间进行更改的数据,因为其他数据是静态编码的。

您只需要确保定义了trigger并在两个请求之间进行了更改。

答案 1 :(得分:0)

尝试像这样调用你的ajax someAJAX.bind(target)(); 然后在功能上变成

function someAJAX() {

$.ajax({
    // The URL for the request
    url: "onyxiaMenus/menuBase.php",

    // The data to send (will be converted to a query string)
    data: {
        //class: this.attr("class"),
        tableCall: true,
        sort: this.attr('id'),
        sortOrder: 'DESC',
    },

    // Whether this is a POST or GET request
    type: "GET",

    // The type of data we expect back
    //The available data types are text, html, xml, json, jsonp, and script.
    dataType: "html",

    // Code to run if the request succeeds;
    // the response is passed to the function
    success: function (data) {
        console.log("AJAX success!");
        $('#prop').replaceWith(data);

    }
    ,

    // Code to run if the request fails; the raw request and
    // status codes are passed to the function
    error: function (xhr, status, errorThrown) {
        console.log("Sorry, there was a problem!");
        console.log("Error: " + errorThrown);
        console.log("Status: " + status);
        console.dir(xhr);
    }
    ,

    // Code to run regardless of success or failure
    complete: function (xhr, status) {
        console.log("The request is complete!");
        $('#view').prepend(xhr);

    }


});
}

答案 2 :(得分:0)

感谢您对此问题的输入。我找到了问题的根源。我的请求正在被正确处理,但是转储表会产生语法错误,导致无法将新信息附加到我的页面。

感谢您的快速回复! 它的墙现在可以工作了。