我有一个通过ajax获取数据的功能。问题是构造开关导致此错误:
cannot read property 'done' of undefined
我不知道为什么
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
function changeSelect(input,type)
{
var out;
switch(type)
{
case "sport" : out=$.post("/ajax/ajax.php",{sport:input.value});
case "competition" :out=$.post("/ajax/ajax.php",{competition.value});
}
out.done(function(data)
{
$("#output").html(data);
});
}</script>
感谢您的回答。
最佳答案
您收到的错误的可能原因是type
的值与您的任何case
语句都不匹配。因此,out
仍为undefined
,并为您提供所看到的错误。
此外,如果您使用break;
语句,并且case:
不是有效的ES5 Javascript,则必须使用{competition.value}
语句。也许您想要这样的事情:
function changeSelect(input, type) {
var out;
switch (type) {
case "sport":
out = $.post("/ajax/ajax.php", {sport: input.value});
break;
case "competition":
out = $.post("/ajax/ajax.php", {sport: competition.value});
break;
default:
break;
}
if (out) {
out.done(function(data) {
$("#output").html(data);
});
}
}
我不完全了解您对
{competition.value}
的含义。我猜想也许您希望将其设置为{sport: competition.value}
,但是我在任何地方都看不到competition
定义,因此我不确定。或者,也许删除一些重复的代码并使用此代码:
function changeSelect(input, type) {
var val;
switch (type) {
case "sport":
val = input.value;
break;
case "competition":
val = competition.value;
break;
default:
break;
}
if (val) {
$.post("/ajax/ajax.php", {sport: val}).then(function(data) {
$("#output").html(data);
});
}
}
关于javascript - 由于切换,无法读取未定义的属性“完成”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29088112/