jquery合并所有相同的请求?

时间:2017-10-24 06:07:53

标签: javascript jquery ajax

我在服务器端写了一个ajax api来获取随机列 数据库中的一个表使用Express和nodejs,并在客户端循环请求此接口10次。但是,每个循环我得到10个相同的响应。

在测试之后,我发现即使用jquery(v1.11.1)调用api 10次,我只在服务器端获得一个请求;然后我在[$ .ajax()]的选项[data]中添加了一个不同的参数,我在服务器端获得10个请求,在cilent端获得10个不同的响应; 我认为这是[$ .ajax]的默认设置,所以我试着在jquery的文档中找到它,并且,我没有找到它。(谷歌也找不到任何东西);

我确实为每个请求使用不同的参数解决了这个问题,但我不认为这是最好的解决方案。所以,我的问题是:

是否有任何设置可以为每个请求发送唯一请求,即使这些请求在使用jquery(v1.11.1)时都是相同的?

ps:原谅我的英语水平不高,我无法表达自己更好......

for( var i = 0; i < 10; ++i ) {
    $.ajax( {
        type: "get",
        url: "/getNickname",
        data: {
            //index: i //my solution
        },
        beforeSend: function ( request ) {

        },
        success: function ( res ) {
            console.log( "test response is ", JSON.stringify( res ) );
        },
        error: function ( err ) {
            reject( err );
        }
    } );
}
//below is the function to get a random column from table
function getNicknameFromDB() {
    return new Promise( ( resolve, reject ) => {
        pg_pool.query( "select nickname from robot_nick_datas offset random() * (select count(*) from robot_nick_datas) limit 1;", (err, result)=> {
            if( err ){
                console.error( "query error: ", err );
                reject(err);
            }
            let nickname = Array.from(result.rows)[0];
            // console.log( "nick from database is ", nickname );
            resolve( nickname );
        } )
    } );
}
//below is the response
test response is  "{\"nickname\":\"caro\"}"
test response is  "{\"nickname\":\"caro\"}"
test response is  "{\"nickname\":\"caro\"}"
test response is  "{\"nickname\":\"caro\"}"
test response is  "{\"nickname\":\"caro\"}"
test response is  "{\"nickname\":\"caro\"}"
test response is  "{\"nickname\":\"caro\"}"
test response is  "{\"nickname\":\"caro\"}"
test response is  "{\"nickname\":\"caro\"}"
test response is  "{\"nickname\":\"caro\"}"

1 个答案:

答案 0 :(得分:2)

最有可能的是,响应被缓存,因为它是GET请求。尝试告诉jQuery禁用缓存:

$.ajax( {
    type: "get",
    url: "/getNickname",
    cache: false,          // <--- here
    data: {
        //index: i //my solution
    },
    beforeSend: function ( request ) {

    },
    success: function ( res ) {
        console.log( "test response is ", JSON.stringify( res ) );
    },
    error: function ( err ) {
        reject( err );
    }
} );