1. 程式人生 > >Ajax+PHP實現跨域訪問的兩種方式

Ajax+PHP實現跨域訪問的兩種方式

1.相容IE瀏覽器的方法,在Ajax請求的時候使用jsonp:

$("#search").click(function() {
				$.ajax({
					type : "GET",
					url : "http://127.0.0.1/raid/jquery_learning/ajax_learning/php/index.php?number="+$("#keyword").val(),
					dataType : "jsonp",
					jsonp : "callback",
					success : function(data) {
						if (data.success) {
							$("#searchResult").html(data.msg);
						} else {
							$("#searchResult").html("出現錯誤"+data.msg);
						}
					},
					error : function(jqXHR) {
						alert("發生錯誤"+jqXHR.status);
					}
				})
			});

然後在PHP接收和返回的時候也帶上jsonp的資料:
function search() {
		$jsonp = $_GET["callback"];

		if(!isset($_GET["number"]) || empty($_GET["number"])) {
			echo '{"success":false,"msg":"引數錯誤"}';
			return ;
		}

		global $staff;

		$number = $_GET["number"];
		$result = $jsonp.'({"success":false,"msg":"沒有找到員工"})';

		foreach ($staff as $key => $value) {
			if($value["number"] == $number) {
				$result = $jsonp.'({"success":true,"msg":"找到員工'.$value["name"].'"})';
				break;
			}
		}

		echo $result;
	}


2.只提供給支援HTML5的瀏覽器使用,只需要在PHP的頭部加上如下這兩句話即可:

//處理跨域
	header("Access-Control-Allow-Origin:*"); //*號表示所有域名都可以訪問
	header("Access-Control-Allow-Method:POST,GET");