在我的asp.net mvc网站上,当用户将某些内容粘贴到某个文本框中时,我正在对服务器进行ajax调用。该调用曾经在IE 8中起作用,但现在它停止在IE 11中起作用,这使我的h.open(c.type,c.url,c.async)
jQuery 1.7.1中的访问被拒绝异常。
长期的研究提示我,这可能与CORS问题有关,但是...每个呼叫都在同一个域中。
<input type="text" id="Pasteexcelhere" name="Pasteexcelhere" />
<script type='text/javascript' >
$(function () {
onp();
});
function onp() {
obj = document.getElementById('Pasteexcelhere');
$('#Pasteexcelhere').on('paste', function (e) {
x = obj.value;
$.ajax({
type: "POST",
url: "<%= Url.Action("PasteFromExcel", "RequestData" ) %>",
data: "{'data': '" + x + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
traditional: true,
success: function (da) {
alert("success");
},
error: function (d) {
alert(d.statusText); // access denied
}
});
});
</script>
当尝试直接拨打相同的电话时,我们通过一个简单的链接进行说明:
<a id="mylink" href="#" onclick="blubb();return false;">Pasted</a>
<script type='text/javascript' >
function blubb() {
obj = document.getElementById('Pasteexcelhere');
x = obj.value;
$.ajax({
type: "POST",
url: "<%= Url.Action("PasteFromExcel", "RequestData" ) %>",
data: "{'data': '" + x + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
traditional: true,
success: function (da) {
var propertyGrid = $('#RequestedTickers').data('tGrid');
propertyGrid.rebind({});
},
error: function (d) {
alert(d.statusText);
}
});
};
</script>
它按预期运行...(无访问被拒绝)
有人知道如何运行它吗?
谢谢!
最佳答案
由于它仅在粘贴时不起作用,因此问题似乎出在粘贴事件处理程序上。
搜索IE11和粘贴事件的问题后,我在StackOverflow上发现了其他“ IE11 pasting clipboard data to an input element annoyance”。
这可能是一个长镜头,但是您可以尝试与AlvinfromDiaspar在该帖子中以answer提供的相同的“解决方案”(=解决方法):
$('#Pasteexcelhere').on('paste', function () { setTimeout(blubb, 100) });