Ajax请求可正常运行但页面无内容显示,部分jQuery操作未完成?
看起来你的AJAX请求虽然能成功提交数据,但后续的函数执行卡壳了——毕竟$("#quiz_form,#demo1").addClass("hide")能正常运行,说明基础的JS环境和jQuery选择器没问题,问题大概率出在AJAX回调逻辑或者后续函数本身。给你几个具体的排查方向:
先确认AJAX请求的返回状态与内容:打开浏览器开发者工具(按F12)切换到「Network」标签,找到请求
ajax.php的那条记录,查看:- HTTP状态码是不是
200 OK,如果是500/404这类错误码,说明服务器端返回有问题; - 「Response」面板里的内容是不是符合预期格式(比如JSON有没有语法错误)。有时候服务器虽然收到了数据,但返回的内容有异常(比如意外的PHP报错信息、JSON格式不合法),会直接导致依赖返回值的后续函数执行失败。
- HTTP状态码是不是
验证后续函数的调用时机是否正确:你是把后续函数放在AJAX的回调里吗?如果AJAX是异步模式(默认就是异步),要是后续函数写在AJAX请求代码的外面,会比回调函数先执行,自然看不到效果。可以在AJAX的
success或者done回调里加一行console.log("AJAX回调触发了"),然后看浏览器控制台有没有输出,确认回调是否真的被触发。检查浏览器控制台的JS报错信息:切换到「Console」标签,看看有没有红色的错误提示——比如
ReferenceError: xxx is not defined(函数未定义)、Cannot read property 'xxx' of null(找不到目标DOM元素),这类错误会直接中断后续JS代码的执行。举个例子,如果后续函数依赖某个已经被隐藏的元素,或者该元素根本不存在,就会触发报错导致函数停在半路。单独调试后续函数:把后续函数的名称直接在控制台里手动调用,比如如果函数叫
displayQuizResult(),就直接在Console里敲displayQuizResult(),看看能不能正常执行或者有没有报错。这能快速排除函数本身的逻辑问题。检查函数内部的条件判断:看看后续函数里有没有类似
if (response.data.status === 'success')这类条件逻辑?如果服务器返回的字段和你判断的不匹配(比如status字段是ok而不是success),那函数里的核心代码就不会被执行。
内容的提问来源于stack exchange,提问作者Joe

