jsonp+phpドメイン間インスタンス


ドメイン間の存在により、リソースインタラクションは異なるドメイン名間で複雑で安全になります.ドメイン間データ伝送の場合、jsonpは、データ長が小さい場合(getの長さ内)、より良い解決策である.
jsonpの使用中のdemoを共有します.
ドメイン間参照について:ドメイン間の総括と解決方法
jsonpのjsエンドコール
主な機能:jsonpを通じてサーバーに向かい、対応するインタフェースを呼び出し、対応するデータを取得する.取得したデータの結果に基づいて、対応するコールバックを行います.
/**
 * jsonp demo
 *       ,           
 *
 * @author:cuihuan
 * @private
 */
_jsonpDemo:function(callback){
    $.ajax({
        url: "http://your_site_url",
        type: 'GET',
        dataType: 'JSONP',
        success: function (data) {
            if (data && data.status) {
                if (data.status == "0") {
                    // failure solve
                    ...
                } else if (data.status == 500) {
                    // server error log
                    _sendInternalLog(data.info);
                } else if (data.status == 1) {
                    //success solve 
                    ...
                }
                
                // callback func
               (callback && typeof(callback) === "function" ) && callback(); 
            }

        },
        error: function () {
            _sendFailLog();
        }
    })

}

jsonpサーバ側(php)

/**
 *         
 *
 * status: 0     ,1    ,500    
 * return: jsonp 
 */
public function actionGetJsonPInfo()
{
    try {
        $data = getNeedData()
        if ($data['status'] == "success") {
            $res = array("status" => "1", 'info' => $data['info']);
        }else{
            $res = array("status" => "0", 'info' => '0');
        }
    }catch (Exception $e){
        $res = array("status" => "500", 'info'=> $e);
    }

    // jsonp   get         
    if (isset ($_GET['callback'])) {
        header("Content-Type: application/json");
        echo $_GET['callback']."(".json_encode($res).")";
    }
}

まとめ
  • は現在、データ量の小さいドメイン間伝送であり、jsonpは良い解決策である.
  • jsonpはdataで自動的に認識でき、res.status、res.infoなどの状態ビットが便利です.
  • php側の受信コードはAccess-Control-Allow-Origin:*リスクが大きすぎないことが望ましい.

  • 私のテキスト