Так что, вероятно, не самый лучший заголовок, но я думаю, что это происходит.
Я написал этот вопрос , желая заполнить раскрывающийся список в моем jqGrid, чтобы пользователь мог выбрать из доступных вариантов для фильтрации. Предоставленное решение работает в одном случае, но не в другом. Первый тип, который извлекает данные (для выпадающего фильтра заголовка столбца), моя трассировка стека выглядит так:
callback() jquery-1.6.2.js (line 7947)
_ = readystatechange
done() jquery-1.6.2.js (line 7183)
status = 200
statusText = "success"
responses = Object { text="["Cake", "Sugar", "Waffle"]" }
headers = "Server: ASP.NET Develop...: 22\nConnection: Close\n"
resolveWith() jquery-1.6.2.js (line 1008)
context = Object { url="/IceCream/AvailableConeTypes", isLocal=false, more...}
args = [ Object { readyState=4, responseTExt="["Cake", "Sugar", "Waffle"]", more...} "success"]
complete() jquery...src.js(line 3591)
res = Object { readyState=4, responseText="["Cake", "Sugar", "Waffle"]", more...}
status = "success"
myBuildSelect() Cone (line 75)
data = Object { readyState=4, responseText="["Cake", "Sugar", "Waffle"]", more...}
во второй раз, когда это вызывается (для диалогового окна фильтра панели инструментов jqGrid, позволяющего создавать несколько фильтров И / ИЛИ), трассировка стека немного отличается:
callback() jquery-1.6.2.js (line 7947)
_ = readystatechange
done() jquery-1.6.2.js (line 7168)
status = 200
statusText = "success"
responses = Object { text="["Cake", "Sugar", "Waffle"]" }
headers = "Server: ASP.NET Develop...: 22\nConnection: Close\n"
resolveWith() jquery-1.6.2.js (line 1008)
context = Object { elem=, options={...} }
args = [ "["Cake", "Sugar", "Waffle"]", "success", Object { readyState=4, responseText="["Cake", "Sugar", "Waffle"]", more...} ]
success() jquery...src.js(line 5099)
data ="["Cake", "Sugar", "Waffle"]"
status = "success"
myBuildSelect() Cone (line 75)
data = ="["Cake", "Sugar", "Waffle"]"
Я не совсем понимаю, что здесь происходит. Глядя на файл jquery-1.6.2.js в ссылочных строках, я вижу, что в первом случае он выполняет строку:
deferred.resolveWith { callbackContext, [success, statusText, jqXHR] ); (line 7168)
и во втором случае выполняет строку:
completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText] ); (line 7183)
Похоже, что вещи кэшируются или обрабатываются по-разному, когда во второй раз выполняется вызов этого действия контроллера. Я могу опубликовать дополнительный код, если это полезно, но это по сути то, что я написал в моем предыдущем вопросе вместе с решением Олега. Идеи?