奇数jQuery文本添加到ko.observable文本

奇数jQuery文本添加到ko.observable文本,jquery,knockout.js,Jquery,Knockout.js,我遇到非常奇怪的文本被附加到ko.observable值,该值与textarea绑定 用户可以在textarea中键入issue并使用ajax/JSON发送给我。我有时得到的是: “任何问题用户键入的foo-bar lorem ipsumjQuery7107608176749199629_138686092538” 问题是这件作品: “jQuery17107608176749199629_138686092538”,有时添加。我已经发现第二部分“_138686092538”是时间戳,可能会有所不

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

用户可以在textarea中键入issue并使用ajax/JSON发送给我。我有时得到的是:

“任何问题用户键入的foo-bar lorem ipsumjQuery7107608176749199629_138686092538”

问题是这件作品: “jQuery17107608176749199629_138686092538”,有时添加。我已经发现第二部分“_138686092538”是时间戳,可能会有所不同。第一部分“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 () { }
});

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

数据类型(默认值:智能猜测(xml、json、脚本或html)) 类型:字符串您希望从数据库返回的数据类型 服务器如果未指定,jQuery将根据 响应的MIME类型(在1.4中,XML MIME类型将生成XML) JSON将生成一个JavaScript对象,在1.4中,脚本将执行 脚本,其他任何内容都将作为字符串返回)

“jsonp”:使用jsonp加载JSON块。添加一个额外的 “?callback=?”到URL的末尾,以指定回调。禁用 通过向 URL,除非缓存选项设置为true

jsonp类型:字符串重写jsonp中的回调函数名 要求将在中使用此值而不是“回调” url中查询字符串的“callback=?”部分。所以 {jsonp:'onJSONPLoad'}将导致将'onJSONPLoad=?'传递给 服务器从jQuery1.5开始,将jsonp选项设置为false可以防止 jQuery将“?回调”字符串添加到URL或尝试 使用“=?”进行转换。在这种情况下,还应该显式地 设置jsonpCallback设置。例如,{jsonp:false, jsonpCallback:“callbackName”}


我找到了导致错误的原因。。。然而,我还不知道如何修复它

我正在使用knockout和jQuery ajax调用,如果在通过ajax发送到服务器的任何文本框或文本区域中,我键入“?”(双问号),它将被这个奇怪的jqueryNUMBER_数字文本替换

知道为什么吗

编辑: 获得解决方案-只需添加“jsonp:false”:


你什么意思?有时?你能发布一些代码吗?你使用的是
jsonp
。刚刚添加了代码示例“我有时得到的是”你所说的
有时
?大约100个问题发送正确,其中2个问题是用这个奇怪的“jQueryNUMBER\u时间戳”发送的。我无法复制它,因为它发生在实时服务器上(2台带有负载平衡器的服务器)。正如有人提到的——这似乎是一个JSONP回调——但我不知道为什么要将它添加到我的“description”ko.observable变量中。真的很奇怪。谢谢MelanciaUK,我刚刚在上面的帖子中添加了代码示例。你能检查一下我有没有错吗?我看不到在任何地方使用JSONP。请检查URL是否将参数
callback
作为其查询字符串的一部分。我无法复制此问题,因为它很少在live server上发生。我的URL没有“回调”一词。数据类型被明确设置为“json”。更重要的是,我有负载均衡器,所以很少有用户可以重定向到第二个服务器,如果一个失败。这是否可能导致在后台使用JSONP(而不是JSON)?由于结果被包装在一个jQuery函数中,因此可以保证它返回为
JSONP
。问题是你要重现错误并找出事情超出你控制的地方。
$.ajax({
    (...)
    jsonp: false,
    success: function (results) {},
    (...)
});