добавлен нечетный текст jQuery в текст ko.observable

0

Я испытываю очень странный текст, добавляемый к значению 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 () { }
});
  • 1
    Что ты имеешь в виду - иногда? Можете ли вы опубликовать код?
  • 1
    Вы используете jsonp .
Показать ещё 5 комментариев
Теги:
knockout.js

2 ответа

0
Лучший ответ

Я нашел причину ошибки... однако пока не знаю, как это исправить.

Я использую нокаут и jQuery ajax-вызов, и если в любом текстовом поле или текстовом поле, которое проходит через AJAX на сервер, я набираю '??' (двойные вопросительные знаки) его заменил этот нечетный текст jqueryNUMBER_NUMBER.

любая идея, почему???????

редактировать:

получил решение - просто добавьте "jsonp: false":

$.ajax({
    (...)
    jsonp: false,
    success: function (results) {},
    (...)
});
0

Ваш 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"}

http://api.jquery.com/jQuery.ajax/

  • 0
    спасибо MelanciaUK, я только что добавил пример кода в мой пост выше. Можете ли вы проверить, нет ли там ошибок? Я нигде не вижу использования JSONP.
  • 0
    Проверьте, содержит ли URL-адрес параметр callback как часть строки запроса.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню