Хорошо, у меня есть вызов JQuery AJAX в файле .html, который находится на моем рабочем столе. Он выполняет вызов службы WCF, расположенной на веб-сервере в эфире.
Хорошая новость в том, что это работает. Сорта .. почти .. но не полностью.
Будет выполнен вызов AJAX, а Fiddler покажет ответ JSON от веб-службы. К сожалению, до браузера не доходит. callback=?
есть, поэтому я не получаю ошибку межсайтового скриптинга. (Access-Control бла-бла-бла)
Если я сделаю это с открытыми инструментами разработки Chrome, появится следующее сообщение:
Resource interpreted as script but transferred with MIME type application/json
Успех: обратный вызов не вызывается, а ошибка: обратный вызов возвращает одно слово в statusText: parsererror
Я весь день бился об это.
function AJAXGet() {
$.ajax({
url: "http://xxxx/yyyyService/yyyyService.svc/GetZZZ?callback=?",
dataType: 'json',
data: JSON.stringify('{"customerID": "1"}'),
contentType: "application/json; charset=utf-8; application/x-javascript",
success: function (data) {
alert(data);
},
complete: function (data) {
alert(data);
},
error: function (xhr) {
alert("AJAXGetError: " + xhr.statusText);
}
});
}
Фиддлер говорит, что это было отправлено:
GET /yyyyService/yyyyService.svc/GetZZZ?callback=jQuery150833801421286173_1297309350515&%22{\%22yyyyID\%22:%20\%221\%22}%22&_=1297309350540 HTTP/1
.
Вот WCF:
[OperationContract]
[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
List<Note> GetNotes(string yyyyID)