我有一个通过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>
答案 0 :(得分:3)
您遇到错误的可能原因是type
的值与您的case
语句中的任何一个都不匹配。因此,out
仍为undefined
,并为您提供错误。
此外,如果您的break;
语句和case:
无效,则必须使用{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);
});
}
}