在这个脚本中,使用php的返回将不起作用,而echo将使用。事实上,如果我使用echo,并且有人直接访问该页面,他们将能够看到没有格式化的输出。
<script type="text/javascript">
$(function() {
$('.callAppend').click(function() {
$.ajax({
type: 'GET',
url: 'recent.php',
dataType:'HTML',
cache:false,
success: function(data){
console.log(data);
//}
},
});
return false;
});
});
</script>
这是php脚本
<?php
$feedback = 'Hello this is the php page';
return $feedback; //Use echo, and all works fine.
?>
答案 0 :(得分:2)
return
用于将函数中的值返回到另一段PHP代码。
jQuery不是服务器上PHP代码执行的一部分,所以它不知道服务器端真正发生了什么。 jQuery正在等待呈现的服务器响应,这是echo
提供的。
这个SO答案提供了一个解决方案,只允许这种类型的请求调用AJAX脚本: Prevent Direct Access To File Called By ajax Function
即使它正在检查'XMLHttpRequest',也有人可以通过除了我们之外的其他方式提出此类请求。
答案 1 :(得分:2)
当您使用AJAX加载URL时,您正在加载该URL的原始输出。 Echo产生输出但返回不产生。你需要在OOP的主题上做一些理由来理解返回的目的是什么。
Echo是发送输出的正确方法。