今天,当我探索 Google API 时,我在他们的示例代码中看到,他们只是通过执行以下操作来请求网址
<script src="src="https://www.googleapis.com/customsearch/v1?key=AIzaSyCVAXiUzRYsML1Pv6RwSG1.."></script>
对我来说很难过,在看到这个之前我的第一个想法是ajax。现在我很困惑,这与 2 不同。我无法执行上面的请求,因为我需要在其中添加用户的输入。
喜欢
"https://www.googleapis.com/customsearch/v1?key=AIzaSyCVAXiUzRYsML1Pv6RwSG1&"'+user+'"
那么如果我使用ajax,会达到同样的效果吗?抱歉,我没有尝试过,但即使我尝试了,我仍然很困惑它们之间的区别是什么。
最佳答案
使用<script src>
检索 JSON 数据是一种称为 JSONP 的技术。它绕过了跨站点脚本限制(如果 AJAX 请求的域与其来自的页面不同,则浏览器可能会阻止 AJAX 请求;它不会阻止这种方式的脚本加载)。缺点是您不能执行其他 HTTP 方法(PUT、POST、DELETE 等)——只能执行 GET。另外,正如 @FelixKing 指出的那样,服务器必须支持它 - 如果您只是将 JSON blob 作为 <script>
的内容删除。元素,这不会给你带来任何好处 - 它必须被发送到回调。如果 API 支持 JSONP,通常需要 callback=functionName
参数,发出的脚本将为 functionName({... JSON blob here ...})
.
但是,您仍然可以动态添加用户参数等内容。您只需要使用Javascript添加<script>
元素添加到页面中,而不是将其硬编码到 HTML 中:
var user = "someone";
var scriptTag = document.createElement('script');
scriptTag.src =
"https://www.googleapis.com/customsearch/v1?key=AIzaSyCVAXiUzRYsML1Pv6RwSG1&user="+user
document.getElementsByTagName('html')[0].appendChild(scriptTag);
但我不知道你到底在做什么,或者该调用是否支持 JSONP;这只是使用 Javascript 动态添加 <script>
的示例元素。详细信息由您决定。
关于javascript - ajax 与 src 脚本请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25851158/