我有一个通过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/

10-11 23:45