您可能会对一些关键概念感到困惑。
第一的。JSON 不是文件,它是一种格式,更简单地说,是一种字符串。它非常适合折叠数组和存储地址-值对,所以很多数据都以这种格式飞来飞去。严格来说,它们是 JSON 对象,但它们很像字符串和数组。如果我没记错的话,它看起来像这样:
{ "name" : "john doe", "pet" : "dog", "hobby" : "parasailing" }
其次,AJAX 是对服务器的请求,在原始页面加载后从客户端(浏览器)发出。也就是说,您输入“youtube.com”,然后 youtube 服务器接收请求并将一大堆 HTML 发送回您的浏览器。
您观看视频,进行评分,然后浏览器不会重新加载页面,而是将单独的请求发送回 youtube 服务器,并附上您的评分。请求中有一个参数显示“将其发送到 ratingpage.php”。这个请求是 AJAX。
现在,逻辑发生了(服务器端)。 ratingspage.php
收到您的请求。它会联系数据库、更新或失败或其他任何事情,然后将响应发送回您的浏览器。此响应可能是 JSON 格式。
最后,您的浏览器会解析该响应并根据需要更新 DOM(HTML 文档)。
此时,值得注意的是,如果逻辑发生在客户端(浏览器)上,用户可以看到它——这是一个安全问题!因此,应该在服务器端执行敏感操作,您可以在其中测试和清理请求数据。
总之:
- AJAX 与初始加载事件是分开的。
- 发送的信息是从客户端浏览器收集的
- 逻辑发生在服务器端
- 逻辑可以使用服务器可以理解的任何语言(PHP、Java、Ruby 等)
- 信息返回给浏览器
- 发送和接收的信息可能使用 JSON 格式
- 客户端的一切都发生在 Javascript 中
这是一个带有注释的简单 ajax 请求(用 Javascript 完成)。这没有异常处理、状态检查或任何东西,所以不要使用它!但它给了你基本的想法。
// Make a new request
var req = new XMLHttpRequest(); }
// Requests will have various states depending on whether they're processing,
// finished, error, etc. We'll assume everything went OK.
// We need to establish a handler before the request
// is sent so it knows what to do.
req.onreadystatechange = function() {
// Here's what the server sent back to the browser
alert(req.responseText);
}
// Using the GET method, set up some parameters
req.open("GET", "somelogicpage.php?blah=blee&bloo=bar", true);
// Send the request
req.send(null);
服务器端,somelogicpage.php
可能如下所示:
<?php
if ($_GET['blah'] != 'blee']) {
// This is the response text!
echo "Sorry, you need to blee when you blah.";
}
else {
// (or this)
echo "I'm ecstatic to report nothing is wrong!";
}
?>
您alert(req.responseText)
从前面的 Javascript 中的处理程序函数中将说出 PHP 已转储的任何内容。
所以是的,你可以使用你喜欢的请求的任何部分,并返回你喜欢的任何部分。Javascript 发出哔哔声。