【问题标题】:Use JSONP without wrapping response使用 JSONP 而不包装响应
【发布时间】:2012-08-18 07:01:35
【问题描述】:

当我将 URI 放入 Web 浏览器时,我的服务器会输出此 JSON。我的客户端应用程序将使用 JSONP 获取此 JSON,因为它访问外部域。

{
"is_execution_successful":true,
"data": "something"
}

有没有办法像这样不包装响应来执行 JSONP:

echo $_GET['json_callback']. '('. json_encode($rtnjsonobj) . ')';  

我没有编辑服务器输出的权限。如何使用 AJAX/JQuery 获取 JSON?

我读到的参考资料:http://remysharp.com/2007/10/08/what-is-jsonp/

【问题讨论】:

    标签: php jquery jsonp


    【解决方案1】:

    JSONP 在技术上与 JSON 无关。它只是一个 javascript 代码。

    因此,如果响应是有效的 JSON,那么当您将其作为 javascript (JSONP) 运行时,它不会做任何有用的事情。特别是在这种情况下,JSON 在作为 javascript 执行时会导致语法错误。

    你可以对资源进行跨域ajax请求,但是只有在服务器发送这个头时才有可能:

    Access-Control-Allow-Origin: *
    

    星号当然可以用你的具体来源代替,不一定是通配符

    【讨论】:

    • 我还是不清楚。你的意思是我无法得到我的应用程序的响应?它实际上是一个从 PHP 站点获取 JSON 的 Windows 8 应用程序)。
    • 我不关心 Windows 8 应用程序,但如果它们受到同源策略的限制,那就太奇怪了……你刚刚尝试过直接 ajax 请求吗?
    • 我无法使用直接 ajax 请求获取该 JSON。它总是返回空。我认为这不是同一个域。
    • @Emerald214 是的,但既然你说你是在 win8 应用程序中执行此操作,那么同源策略将没有任何意义。你能试试这个lukencode.com/2012/07/09/…吗?
    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2018-03-19
    • 2015-02-13
    • 2018-04-13
    • 1970-01-01
    相关资源
    最近更新 更多