我试试这个:
$.post('blog.php',
{ },
function(data,status){
if(data && data != "")
{
$("#readmore").before(data);
}
else
{
alert('no more text');
}
});
通常它有效。但是当blog.php为空时,不要运行else
条件。
blog.php的内容是文字。
答案 0 :(得分:2)
如果请求成功并且真正返回一个空字符串,那么您的检查会没问题,尽管您不需要它的后半部分。 E.g:
if (data) {
// Yes it's there
} else {
// No, it's blank
}
......就足够了。但如果它可能有任何空格,则首先需要trim
:
if (data.trim()) {
// Yes it's there
} else {
// No, it's blank
}
(某些旧的浏览器,如IE8可能没有trim
,但您可以轻松地对其进行填充/填充。)
要处理错误情况,请添加.fail
处理程序;为了清洁,让我们将成功处理程序移动到.done
,删除我们没有使用的参数的声明,并删除不必要的空白对象。
这给了我们:
$.post('blog.php')
.done(function(data){
if (data.trim())
{
$("#readmore").before(data);
}
else
{
alert('no more text');
}
})
.fail(function() {
// it failed
});
请注意,这假设响应中的Content-Type
为text/html
或text/plain
或类似,因此您将返回一个字符串。从你所说的,这可能是真的。
通过使用浏览器内置的调试器,您可以随时查看到底发生了什么:
使用菜单或F12(在IE和其他一些菜单上)或Ctrl + Shift + I(Chrome和其他一些,我认为它是Mac OSX上的Cmd + Shift + I)打开开发人员工具。
切换到Source选项卡(可能在IE上称为Debugger)
找到你的代码,通常有一些方法来浏览加载的脚本。
点击done
处理程序中第一行的左侧装订线(行号旁边),会出现一个红色标记或条,这意味着有一个断点< / em>会停止你的代码。对fail
处理程序中的第一行执行相同的操作。
触发后期操作。你的一个断点应该被击中,导致执行在那时停止。
如果它位于done
处理程序中,请将鼠标悬停在data
上以查看完全其中的内容(或切换到“控制台”标签,键入data
,然后按回车键,它会显示data
参数的内容。