我尝试找一个返回json的方法,如果它是一个ajax调用,否则我想要HTML。
我没有使用框架或模板......
这就是我所做的 在我的第一页
$.ajax({
type : 'GET',
dataType: 'json',
url : 'XXXXX.php',
data : {'id' : id_test },
cache : false ,
success : function(html) {
console.log(html);
}
})
在我的XXXXX.php页面中,我有
<?php
$my_id = $_GET['id'];
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
....
return json_encode($my_value);
} else {
?>
<html>
<head>
<title></title>
</head>
<body>
bla bla ba bla bla
</body>
</html>
<?php
}
?>
我不确定我是否使用了这个好的解决方案。
答案 0 :(得分:0)
通常,主机提供的两个(不同的......)URL集合:
旨在由浏览器直接访问并返回HTML的网址。
旨在使用(仅)AJAX调用访问的URL,以及返回JSON(或XML)的URL。
第二组中的URL严格用于程序到程序通信:该技术有时被正式称为远程过程调用(RPC)。 A(JavaScript客户端的程序正在与主机端的另一个程序进行通信,然后以编程方式以某种方式对响应进行操作。
虽然你的技术可以工作,而且表面上看起来我的编码是正确的,但我几乎从来没有真正看过它,也不会推荐它。
答案 1 :(得分:0)
$_SERVER['HTTP_X_REQUESTED_WITH']
是正确的方法,但并非所有服务器/框架都提供此变量,因此进行其他检查非常重要。例如,您可以将contentType: "application/json"
添加到您的jQuery ajax选项中,然后检查$_SERVER["CONTENT_TYPE"]
值:
if($_SERVER["CONTENT_TYPE"] === 'application/json') {
//....
}