将奇怪的jQuery文本添加到ko.observable文本中

时间:2013-12-17 12:46:19

标签: jquery knockout.js

我遇到非常奇怪的文本被附加到与textarea绑定的ko.observable值。

用户可以在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 () { }
});

2 个答案:

答案 0 :(得分:0)

您发送的dataType被定义为jsonp而不是json,这会导致jQuery返回包含在回调函数中的结果(您看到的“奇怪名称”) 。 如果您打算使用跨域AJAX调用,则可以使用参数jsonp定义回调函数的名称。

  

dataType(默认值:Intelligent Guess(xml,json,script或html))   类型:字符串您期望从中返回的数据类型   服务器。如果没有指定,jQuery将尝试根据它推断它   响应的MIME类型(XML MIME类型将产生XML,在1.4中   JSON将产生一个JavaScript对象,在1.4脚本中将执行   脚本,其他任何东西都将作为字符串返回。)

     

“jsonp”:使用JSONP加载JSON块。添加一个额外的   “?回调=?”到URL的末尾以指定回调。禁用   通过将查询字符串参数“_ = [TIMESTAMP]”附加到缓存来缓存   URL除非cache选项设置为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/

答案 1 :(得分:0)

我发现了导致错误的原因......但是还不知道如何修复它。

我正在使用knockout和jQuery ajax调用,如果在通过AJAX到服务器的任何文本框或textarea中输入'??' (双问号)它被这个奇怪的jqueryNUMBER_NUMBER文字取代。

任何想法为什么????????

编辑:

得到解决方案 - 只需添加“jsonp:false”:

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