2013-12-16 36 views
0

我有一段時間用JS和PHP構建一個簡單的API。首先,我在腳本教程Javascript cross-domain api for your website上利用了一個示例/解決方案。代碼在標準瀏覽器上按預期工作;然而,我堅持與IE7,其中的例子不起作用。跨域javascript <-> php

任何智慧的話(其他然後不使用互聯網爆炸7)?

由於提前, 凱特

-

按epascarello建議我結束了以下(這是一個非常骯髒的測試版本):

schock.net客戶端的例子:從www.geekality.net

<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> 

服務器端例如:

<?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); 

?> 
+0

你有什麼錯誤?需要比「不工作」更具體的東西。 – Pitchinnate

+0

「代碼在標準瀏覽器上按預期工作;但是,我堅持使用IE7」---聽起來太熟悉了:) – TheCarver

回答

2

答案是你不能用IE7做什麼,因爲它不支持CORS。如果您想支持該瀏覽器,則需要使用JSONP