簡體   English   中英

跨域javascript < - > php

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM