Я испытываю очень странный текст, добавляемый к значению ko.observable, которое связывается с textarea.
Пользователь может печатать проблему в textarea и отправлять мне с помощью ajax/JSON. То, что я иногда получаю, это:
"Какой бы вопрос пользователь не набрал foo bar lorem ipsumjQuery17107608176749199629_1386860692538"
Проблема заключается в следующем: "jQuery17107608176749199629_1386860692538", который иногда добавляется. Я уже обнаружил, что вторая часть "_1386860692538" является отметкой времени и может отличаться. первая часть "17107608176749199629" остается постоянной, но я понятия не имею, что это значит.
кто-нибудь знает, что вызывает эту проблему?
var issue = {};
issue.description = viewModelIssue.description();
issue.type = $("#selectType option:selected").val();
var jsonData = ko.toJSON(issue);
$.ajax({
type: 'POST',
url: A_URL_HERE,
data: jsonData,
dataType: 'json',
success: function (result, textStatus, jqXHR) { },
complete: function () { }
});
Я нашел причину ошибки... однако пока не знаю, как это исправить.
Я использую нокаут и jQuery ajax-вызов, и если в любом текстовом поле или текстовом поле, которое проходит через AJAX на сервер, я набираю '??' (двойные вопросительные знаки) его заменил этот нечетный текст jqueryNUMBER_NUMBER.
любая идея, почему???????
получил решение - просто добавьте "jsonp: false":
$.ajax({
(...)
jsonp: false,
success: function (results) {},
(...)
});
Ваш dataType
определяется как jsonp
а не json
, что приводит к тому, что jQuery возвращает результаты, завернутые в функцию обратного вызова ("странное имя", которое вы видите). Если вы намерены использовать междоменные вызовы AJAX, вы можете определить имя для функции обратного вызова, используя параметр jsonp
.
dataType (по умолчанию: Intelligent Guess (xml, json, script или html)) Тип: String Тип данных, которые вы ожидаете от сервера. Если ни один не указан, jQuery попытается вывести его на основе типа ответа MIME (тип XML MIME даст XML, в 1.4 JSON будет создан объект JavaScript, в 1.4 скрипт выполнит скрипт, и все остальное будет возвращается как строка).
"jsonp": загружает в блок JSON с помощью JSONP. Добавляет дополнительный "? Callback =?" до конца вашего URL-адреса, чтобы указать обратный вызов. Отключает кеширование путем добавления параметра строки запроса "_ = [TIMESTAMP]" к URL-адресу, если для параметра кеша установлено значение true.
...
jsonp Тип: String Переопределить имя функции обратного вызова в запросе jsonp. Это значение будет использоваться вместо "обратного вызова" в "обратном вызове =?" часть строки запроса в URL-адресе. Итак, {jsonp: 'onJSONPLoad'} приведет к 'onJSONPLoad =?' передается на сервер. Начиная с jQuery 1.5, установка опции jsonp в false запрещает jQuery добавлять строку "? Callback" к URL-адресу или пытаться использовать "=?". для преобразования. В этом случае вы также должны явно установить настройку jsonpCallback. Например, {jsonp: false, jsonpCallback: "callbackName"}
callback
как часть строки запроса.
jsonp
.