2013-03-05 4 views
0

JQuery всегда добавляет 2 GET переменные в конце URL, как это:Как jQuery вычисляет значения переменной обратного вызова?

callback=jQuery172010710813803598285_1362438925287&_=1362438934989 

Но как они вычисляют эти цифры? Я узнал, что первые 10 признаков последних двух чисел - это текущая временная метка, но я не могу понять, что означают 3 последних номера. Или как создается первая часть. Кто знает это?

Спасибо!

+0

Это похоже на то, что это было сделано с помощью какой-то пользовательской реализации. –

+0

Почему? Его попытка быть как можно более случайной. – Fresheyeball

+0

Потому что это был единственный что они все еще могут протестировать серверную сторону, и тогда это послужило бы причиной того, что мой скрипт зависания не работал на сервере. Это не совсем случайное. –

ответ

0

Он создан с помощью этого:

jsonpCallback: function() { 
    var callback = oldCallbacks.pop() || (jQuery.expando + "_" + (ajax_nonce++)); 
    this[ callback ] = true; 
    return callback; 
} 

первого, он пытается использовать ранее использовавшийся обратный вызов, если таковые существует. Если нет, то он использует jQuery.expando (который "jQuery" + (core_version + Math.random()).replace(/\D/g, "") и + "_" + (ajax_nonce++) где ajax_nonce будет $.now() рассчитывается в то время JQuery был инициализирован. Это обеспечивает уникальное имя обратного вызова независимо от того, как быстро вы посылаете запросы.

с этим в виду, Я могу предположить, что вы используете jQuery 1.7.2 и вам необходимо обновить: p

+0

Большое спасибо! –

0

Используя некоторую функцию, которая пытается предоставить как можно больше случайных и уникальных чисел, она может. Некоторая вещь как uniqid() (Link) функция.

Смежные вопросы