php+JavaScript前後端JSONインタラクションを実現(GET/POST)


注意:jsonp方式はドメイン間アクセスの問題を解決することができます.すなわち、読者がフロントエンドコードをローカルにコピーすると、筆者のサーバが提供するjsonインタフェースが依然として利用可能であることがわかります.
フロントエンドコード

<html>
<head>
<meta charset="utf-8">
<title>JSONP   title>
head>
<body>
    <p>callback:p><div id="divCallBackJson">div>
    <p>post:p><div id="divPostJson">div>

    <script type="text/javascript">

function callbackFunction(result, methodName)
{
    var html = '
    '
; for(var i = 0; i < result.length; i++) { html += '
  • '
  • + result[i] + ''; } html += ''; document.getElementById('divCallBackJson').innerHTML = html; } // function postJson() { var msgJson = '{"mainElements":["main_1","main_2"],"tipElements":["tip_1"],"subElements":["sub-1"]}'; var xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById('divPostJson').innerHTML = xmlhttp.responseText; } } xmlhttp.open("POST","/public_api_json/post_json",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("msgJson="+msgJson); console.log(msgJson="+msgJson"); } postJson();
    script> <script type="text/javascript" src="http://www.yixzm.cn/public_api_json/callback_json?jsoncallback=callbackFunction">script> body> html>

    バックエンドコード
    public function callback_json()
    {
        header('Content-type: application/json');
        //       
        $jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);
        //json  
        $json_data = '["jsondata1","jsondata2"]';
        //  jsonp     
        echo $jsoncallback . "(" . $json_data . ")";
    }
    
    public function post_json()
    {
        $json_data = NULL;
    
        if (isset($_POST['msgJson'])) {
            $json_data = $_POST['msgJson'];
        }
        echo $json_data;
    }