[英]Cross-domain javascript <-> php
我正忙着使用JS和PHP構建一個簡單的API。 首先,我在您的網站上使用腳本教程Javascript跨域api的示例/解決方案。 代碼在標准瀏覽器上按預期工作; 但是,我堅持使用IE7,其中示例不起作用。
任何智慧的話(其他不使用Internet Exploder 7)?
先謝謝你,凱特
-
根據epascarello的建議,我最終得到了以下內容(這是一個非常臟的測試版本):
來自schock.net的 CLIENT-SIDE示例:
<html>
<script>
function jsonpCallback(data){
alert(data);
}
// Create a new script element
var script_element = document.createElement('script');
// Set its source to the JSONP API
script_element.src = 'http://myserver.com/api.php?callback=jsonpCallback';
// Stick the script element in the page <head>
document.getElementsByTagName('head')[0].appendChild(script_element);
</script>
</html>
來自www.geekality.net的 SERVER-SIDE示例:
<?php
header('content-type: application/json; charset=utf-8');
function is_valid_callback($subject)
{
$identifier_syntax = '/^[$_\p{L}][$_\p{L}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\x{200C}\x{200D}]*+$/u';
$reserved_words = array('break', 'do', 'instanceof', 'typeof', 'case',
'else', 'new', 'var', 'catch', 'finally', 'return', 'void', 'continue',
'for', 'switch', 'while', 'debugger', 'function', 'this', 'with',
'default', 'if', 'throw', 'delete', 'in', 'try', 'class', 'enum',
'extends', 'super', 'const', 'export', 'import', 'implements', 'let',
'private', 'public', 'yield', 'interface', 'package', 'protected',
'static', 'null', 'true', 'false');
return preg_match($identifier_syntax, $subject) && !in_array(strtolower($subject), $reserved_words);
}
$data = array(1,2,3,4,5,6,7,8,9);
$json = json_encode($data);
# Verify JSON callback and respond
if (is_valid_callback($_GET['callback']))
exit("{$_GET['callback']}($json)");
# Handle a bad request
header('status: 400 Bad Request', true, 400);
?>
答案是你不能用IE7做你正在做的事情,因為它不支持CORS。 如果要支持該瀏覽器,則需要使用JSONP 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.