Исходя из того, что пытается сделать ваш код, я не уверен, почему вы указываете jsonpCallback
и success
в своем вызове $.ajax
.Я бы посоветовал вам просто указать success
для обработки ваших данных и обработки страниц.Позвольте jQuery определить имя вашего обратного вызова jsonp.
По сути, обратный вызов jsonp получает полезную нагрузку от службы данных WCF, а затем передает ее обработчику успеха.Похоже, вы могли бы использовать jsonpCallback
, если вы хотите выполнить некоторое кэширование или другую предварительную обработку данных, прежде чем они будут обработаны вашим обработчиком success
.Я не уверен, почему в этом случае вы указали бы ту же функцию, что и ваши обработчики jsonpCallback
и success
.(Я кратко просмотрел статью Стивена, на которую вы ссылались, и я не знаю, почему он это делает.)
Ниже приведен пример вызова jsonp к службе данных WCF, которую я использую в демонстрациях и беседах (и имеюиспользовал на некоторое время).Я использую JSONPSupportBehaviorAttribute
, чтобы включить JSONP в моей службе данных WCF (не уверен, используете ли вы это или нет).
Но в моем примере кода я не указываю jsonpCallback
название;Я просто указываю параметр строки запроса jsonp
(должен быть $callback
вместо значения по умолчанию callback
), но я даю jQuery имя функции обратного вызова jsonp. Обработчик
My success
вызывается один раз ивсе отлично работаетПоэтому я предлагаю забыть о jsonpCallback
, оставить обработчик success
на месте, и я думаю, что все должно начать работать лучше.
Надеюсь, это поможет.Дайте мне знать, если у вас есть дополнительные вопросы.Удачи!
$.ajax({
url: 'http://server:25812/Services/AgileWays.Baseball.Service.svc/Teams?$format=json&$filter=yearID eq 1882',
type: 'GET',
dataType: 'jsonp',
cache: false,
jsonp: '$callback',
error: function (x, t, r) { alert(x.response.message); },
success: function (data) {
$.each(data.d.results, function (i, val) {
$("#results").append("<div>" + val.name + "</div>");
});
}
});