Jquery动态更改ajax请求的数据值

Jquery dynamically change data value for ajax request

本文关键字:数据 请求 ajax 动态 Jquery      更新时间:2023-09-26

我需要这个函数来计算每次插入的消息的最后id,但这样它不工作,它总是发布初始数字

 $("#conversazione").smartupdater({
 url : "localhost/social/public/async/check-conversazione",
 minTimeout: 2000,
 type: 'POST',
 data: { 
    'id': id,
    'last': $(".messaggioAltri:first").attr("data-number-message")
},
dataType: 'JSON'
},
function (data) {
    if(data.aggiornamenti==1){
        $.each(data.messaggi, function(indice, message){
                       mess="<div class='singoloMessaggio'> data-number-message="+message.number+">"
                                ....
                                "</div>";
                        $(mess).hide();
                        $(mess).css({'background-color': '#FF7519'});
                        $('#messaggiConversazione').prepend(mess);
                        $(mess).fadeIn(1000);
                        $(mess).removeAttr("style");                           
                   });

    }else{
        //nothing
    }
}
);

我也试过用函数来代替,比如:

$("#conversazione").smartupdater({
 url : "localhost/social/public/async/check-conversazione",
 minTimeout: 2000,
 type: 'POST',
 data: { 
   'id': id,
   'last': getLast()
 },....etc...
function getLast(){
 return $(".messaggioAltri:first").attr("data-numero-messaggio");
}

但是我总是有同样的错误,用fierbug我看到它总是发送初始数字…这似乎很简单,但我不知道出了什么问题…你有什么建议?

试试JSON.stringify

$("#conversazione").smartupdater({
 url : "localhost/social/public/async/check-conversazione",
 minTimeout: 2000,
 type: 'POST',
 data: JSON.stringify({'id':id,'last': getLast()}), ....etc...
});

您没有更新id,因此它始终具有相同的值。

您应该在回调函数中更改其值,例如

if(data.aggiornamenti==1){
     //I'm assuming the latest update is the last in the array
    id = data.aggiornamenti[data.aggiornamenti.length -1].id;
}