jQuery v1.7.2
我有这个函数,它在执行时给了我以下错误:
Uncaught TypeError: Illegal invocation
下面是函数:
$('form[name="twp-tool-distance-form"]').on('submit', function(e) {
e.preventDefault();
var from = $('form[name="twp-tool-distance-form"] input[name="from"]');
var to = $('form[name="twp-tool-distance-form"] input[name="to"]');
var unit = $('form[name="twp-tool-distance-form"] input[name="unit"]');
var speed = game.unit.speed($(unit).val());
if (!/^\d{3}\|\d{3}$/.test($(from).val()))
{
$(from).css('border-color', 'red');
return false;
}
if (!/^\d{3}\|\d{3}$/.test($(to).val()))
{
$(to).css('border-color', 'red');
return false;
}
var data = {
from : from,
to : to,
speed : speed
};
$.ajax({
url : base_url+'index.php',
type: 'POST',
dataType: 'json',
data: data,
cache : false
}).done(function(response) {
alert(response);
});
return false;
});
如果我从ajax调用中删除data
,它就可以工作。有什么建议吗?
谢谢!
发布于 2012-04-26 06:27:14
我认为你需要有字符串作为数据值。这可能是jQuery内部没有正确编码/序列化To & From对象的原因。
尝试:
var data = {
from : from.val(),
to : to.val(),
speed : speed
};
另请注意以下各行:
$(from).css(...
$(to).css(
因为To & From已经是jQuery对象,所以不需要jQuery包装器。
发布于 2014-01-03 23:52:14
尝试在ajax设置中设置processData: false,如下所示
$.ajax({
url : base_url+'index.php',
type: 'POST',
dataType: 'json',
data: data,
cache : false,
processData: false
}).done(function(response) {
alert(response);
});
发布于 2014-02-26 17:02:39
只是为了记录,如果您尝试在数据中使用未声明的变量,也可能会发生这种情况,比如
var layout = {};
$.ajax({
...
data: {
layout: laoyut // notice misspelled variable name
},
...
});
https://stackoverflow.com/questions/10324594
复制相似问题