使用 jQuery 进行跨域 AJAX
jQuery 的 AJAX 功能是动态 Web 开发的重要工具。但是,当跨不同域执行 AJAX 请求时,您可能会遇到跨源资源共享 (CORS) 问题。
当 test.php 和 testserver.php 驻留在不同的服务器上时,就会出现这样的问题,从而导致“错误”警报被触发。这是因为浏览器安全措施默认限制来自不同来源的 AJAX 请求。
解决方案:JSONP
为了克服 CORS,可以使用 JSONP(带有 Padding 的 JSON)。 JSONP 采用不同的方法,从远程服务器动态加载脚本,避免 CORS
实现
jQuery:
$.ajax({ url: "testserver.php", dataType: 'jsonp', // Specify JSONP data type success:function(json){ // Process JSON data alert("Success"); }, error:function(){ alert("Error"); } });
PHP:
<?php $arr = array("element1", "element2", array("element31", "element32")); $arr['name'] = "response"; echo $_GET['callback']. "(".json_encode($arr).");"; ?>
请注意,PHP 的 echo 语句旨在包装jQuery 提供的回调函数中的 JSON 数据,包括正确的引号。
或者,jQuery 的 $.getJSON() 可以用作简写方法,并附加“callback=?”作为 URL 的 GET 参数。 jQuery 会根据这个参数自动生成合适的回调函数。
以上是JSONP如何解决jQuery中的跨域AJAX问题?的详细内容。更多信息请关注PHP中文网其他相关文章!