ScriptTagProxy解决跨域json调用

相信很多朋友有时候会调用一些跨域的json,这时候用Ext.data.HttpProxy 就不灵了,这是由于安全方面的原因.Ext也为我们提供了另一个专门跨域调用的类,Ext.data.ScriptTagProxy,下面我们来看看这一个方法如何使用.
我们先来看一段Ext例子里面的代码:
.JS代码如下

 // create the Data Store
    var store = new Ext.data.Store({
        // load using script tags for cross domain, if the data in on the same domain as
        // this page, an HttpProxy would be better
        proxy: new Ext.data.ScriptTagProxy({
            url: 'http://extjs.com/forum/topics-browse-remote.php'
        }),

        // create reader that reads the Topic records
        reader: new Ext.data.JsonReader({
            root: 'topics',
            totalProperty: 'totalCount',
            id: 'threadid',
            fields: [
                'title', 'forumtitle', 'forumid', 'author',
                {name: 'replycount', type: 'int'},
                {name: 'lastpost', mapping: 'lastpost', type: 'date', dateFormat: 'timestamp'},
                'lastposter', 'excerpt'
            ]
        }),

        // turn on remote sorting
        remoteSort: true
    });
    store.setDefaultSort('lastpost', 'desc');

topics-browse-remote.php

<?php
//Create json
$json_data = "......";
// Grab the callback variable sent with every ScriptTagProxy request
$callback = $_REQUEST['callback'];
// Return the JSON string within the callback function, so ExtJS can interpret the response
print $callback.'('.$json_data.')';
?>

这样就完成了,但有时候这一个文件既要给HttpProxy调用,又要给ScriptTagProxy调用.同一个文件可以完成吗?当然可以.如以下代码:

<?php
//Create json
$json_data = "......";
// Grab the callback variable sent with every ScriptTagProxy request
$callback = $_REQUEST['callback'];
// Return the JSON string within the callback function, so ExtJS can interpret the response
if(!empty($callback))
  $json_data = $callback.'('.$json_data.')';
print $json_data; 
?>