【问题标题】:prototype plugin for cross-domain-request? (to other host's websites!)跨域请求的原型插件? (到其他主机的网站!)
【发布时间】:2011-07-04 05:46:50
【问题描述】:

是否有任何用于 ajax 跨域查询的插件或最佳实践?

我只找到了这个:http://www.mellowmorning.com/2007/10/25/introducing-a-cross-site-ajax-plugin-for-prototype/ 但它对我不起作用...

编辑:我首先在原型 1.7 上尝试过,在切换到 1.5 后它工作了……但是为什么 1.7 不再支持它了?!知道如何在 1.7 中工作吗?

【问题讨论】:

    标签: javascript prototypejs


    【解决方案1】:

    如果您没有找到原生 Prototype 解决方案,那么您可以尝试将 jQuery 仅用于 AJAX 并将 Prototype 用于其他所有内容。它只有 29kB,你可以从谷歌热链接(或other CDNs 选择)。只需在您的 HTML 中同时包含 Prototype 和 jQuery 并记住调用 jQuery.noConflict() 否则 jQuery 将使用 Prototype 也使用的 $() 函数:

    <script src="//ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script>
    <script>
        jQuery.noConflict();
    </script>
    

    现在您可以在脚本中使用它们,如下所示:

    // using jQuery:
    jQuery.ajax({
        url: 'http://...',
        type: 'POST',
        dataType: 'jsonp',
        data: {
            // ...
        },
        success: yourHandler
    });
    
    // using Prototype:
    function yourHandler(data) {
        // use returned data
    }
    

    参见DEMO(适用于 Prototype 1.7 和 jQuery 1.5)

    【讨论】:

    • 不,我真的不想使用 jquery... 或者更好地说:我不能在项目中这样做。
    • 你能说为什么吗?我真的很想知道,因为昨天在what are the usual reasons not to use jQuerymy reply 上出现了一个问题,我列举了我听到的三个原因:文件大小、速度和对知识产权的担忧,所有这些似乎都不是特别合理考虑替代方案。能说说你的理由吗?
    • 另外,如果是SomePrototypePlugin.ajax({ ... });而不是jQuery.ajax({ ... });,你会使用它吗?因为它执行跨域 AJAX 查询,所以许可证与 Prototype (MIT) 中的许可证相同,可与 Prototype 1.7 (TESTED) 配合使用,它快速、干净、健壮、可移植......也许你可以告诉谁在停止您从使用 jQuery 中得知它是 Prototype 插件吗? ;) 只是一个想法...
    • @eav 我也想听听反对 jQuery 的任何理由。
    猜你喜欢
    • 2013-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2014-01-10
    • 2013-02-15
    • 1970-01-01
    • 2018-09-17
    相关资源
    最近更新 更多