处理格式错误的远程 JSONP 响应

发布于 2024-12-07 08:15:00 字数 2308 浏览 0 评论 0原文

这是我原来的问题的延续链接

你可以看到我相当冗长的转换通过 aaronfrost,我们确定 jquery 已加载到 .php 中(如 CHROME 中的网络选项卡所示),但它试图立即作为脚本运行。我的问题是,在哪里可以将其以纯文本形式加载,然后简单地用 js 解析出所需的数据。不一定是 jQuery,这只是我们在本例中要采用的路线。我还尝试使用以下代码并收到完全相同的“意外令牌”错误。我认为,如果有一种方法可以处理格式错误的 JSON 客户端,我们就能够以一种丑陋的方式完成这项工作。

如果 javascript 不起作用,您认为采用 java applet 的路线(保留客户端 cookie,非服务器端)会达到我正在寻找的所需最终结果吗?

 <script type="application/javascript" src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js"></script>

 <script type="application/javascript">
var url = 'http://www.makecashnow.mobi/jsonp_test.php';

//<!-[CDATA[
    function JSONscriptRequest(fullUrl) {
        // REST request path
        this.fullUrl = fullUrl; 
        // Keep IE from caching requests
        //this.noCacheIE = '&noCacheIE=' + (new Date()).getTime();
        // Get the DOM location to put the script tag
        this.headLoc = document.getElementsByTagName("head").item(0);
        // Generate a unique script tag id
        this.scriptId = 'JscriptId' + JSONscriptRequest.scriptCounter++;
    }

    // Static script ID counter
    JSONscriptRequest.scriptCounter = 1;

    // buildScriptTag method
    //
    JSONscriptRequest.prototype.buildScriptTag = function () {

        // Create the script tag
        this.scriptObj = document.createElement("script");

        // Add script object attributes
        this.scriptObj.setAttribute("type", "text/javascript");
        this.scriptObj.setAttribute("charset", "utf-8");
        //this.scriptObj.setAttribute("src", this.fullUrl + this.noCacheIE);
        this.scriptObj.setAttribute("src", this.fullUrl);
        this.scriptObj.setAttribute("id", this.scriptId);
    }

    // removeScriptTag method
    // 
    JSONscriptRequest.prototype.removeScriptTag = function () {
        // Destroy the script tag
        this.headLoc.removeChild(this.scriptObj);  
    }

    // addScriptTag method
    //
    JSONscriptRequest.prototype.addScriptTag = function () {
        // Create the script tag
        this.headLoc.appendChild(this.scriptObj);
    }

    var obj = new JSONscriptRequest(url);
    obj.buildScriptTag();
    obj.addScriptTag();
//]]>

</script>

this is a continuation of my original question here link

You can see through my rather lengthy conversion with aaronfrost that we determined the jquery was loading in the .php (as seen on the network tab in CHROME) however it's trying to be ran as a script immediately. My question is where or not it's possible to load that in as plain text and simply then do a js parse out the needed data. Doesn't have to be jQuery this was just the route we were going in this example. I've also tried with the following code and recieve the exact same "Unexpected token" error. I think if there were a way to just some how handle the malformed JSON client side we would be able to make this work, in a ugly sort of way.

If javascript doesn't work do you think going the route of a java applet (preserve client cookies, non-server side) would achieve the desired end result i'm looking for?

 <script type="application/javascript" src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js"></script>

 <script type="application/javascript">
var url = 'http://www.makecashnow.mobi/jsonp_test.php';

//<!-[CDATA[
    function JSONscriptRequest(fullUrl) {
        // REST request path
        this.fullUrl = fullUrl; 
        // Keep IE from caching requests
        //this.noCacheIE = '&noCacheIE=' + (new Date()).getTime();
        // Get the DOM location to put the script tag
        this.headLoc = document.getElementsByTagName("head").item(0);
        // Generate a unique script tag id
        this.scriptId = 'JscriptId' + JSONscriptRequest.scriptCounter++;
    }

    // Static script ID counter
    JSONscriptRequest.scriptCounter = 1;

    // buildScriptTag method
    //
    JSONscriptRequest.prototype.buildScriptTag = function () {

        // Create the script tag
        this.scriptObj = document.createElement("script");

        // Add script object attributes
        this.scriptObj.setAttribute("type", "text/javascript");
        this.scriptObj.setAttribute("charset", "utf-8");
        //this.scriptObj.setAttribute("src", this.fullUrl + this.noCacheIE);
        this.scriptObj.setAttribute("src", this.fullUrl);
        this.scriptObj.setAttribute("id", this.scriptId);
    }

    // removeScriptTag method
    // 
    JSONscriptRequest.prototype.removeScriptTag = function () {
        // Destroy the script tag
        this.headLoc.removeChild(this.scriptObj);  
    }

    // addScriptTag method
    //
    JSONscriptRequest.prototype.addScriptTag = function () {
        // Create the script tag
        this.headLoc.appendChild(this.scriptObj);
    }

    var obj = new JSONscriptRequest(url);
    obj.buildScriptTag();
    obj.addScriptTag();
//]]>

</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文