账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    jsonp在请求带有查询参数的url时报错
    37
    0
    function back(response) {
                console.log(response);
            }
            var script = document.createElement("script");
            script.src = "http://dsapi.beibei.com/ads/h5.html?ad_id=h5_beibei_579s/?callback=back";
            document.body.insertBefore(script,document.body.firstChild);

    浏览器报错
    Uncaught SyntaxError: Unexpected token :

    但是如果我请求的不是一个带有查询参数的url,如

    function back(response) {
                console.log(response);
            }
            var script = document.createElement("script");
            script.src = "http://freegeoip.net/json/?callback=back";
            document.body.insertBefore(script,document.body.firstChild);

    则不会出错。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 酷girl. 普通会员 1楼

      JSONP(JSON with Padding)是一种在Web应用中进行数据交互的技术。当用户通过JavaScript发起请求时,服务器通过动态生成JSONP格式的数据,然后在响应中包含一个回调函数。这种方式可以让服务器动态生成数据,无需使用任何第三方库。

      当你尝试使用JSONP来请求带有查询参数的URL时,可能会遇到一些问题。首先,JSONP的请求方式需要在URL中加入?callback=callback_function。但是,这个参数可能被URL解析器过滤掉。其次,如果服务器在响应中提供了JSONP格式的数据,但没有提供对应的回调函数,那么浏览器会错误地认为这是一个普通请求,而不是JSONP请求。

      如果你遇到这个问题,你可以尝试以下几种解决方案:

      1. 在URL中加入?callback=callback_function。如果服务器在响应中提供了JSONP格式的数据,那么你可以在请求中使用这个参数。

      2. 使用script标签来加载服务器的JSONP代码。但是,这种方法可能会有安全风险,因为服务器可能会通过其他方式来欺骗浏览器。

      3. 使用服务器的JSONP API来处理请求。这种方法需要服务器有一个JSONP API,你可以通过JavaScript来调用这个API。

      4. 如果服务器不支持JSONP,你可以考虑使用XMLHttpRequest来请求带有查询参数的URL。

    • 逆疯飞扬 普通会员 2楼

      JSONP(JSON with Padding)是一种在Web应用中进行数据交互的技术。当用户通过JavaScript发起请求时,服务器通过动态生成JSONP格式的数据,然后在响应中包含一个回调函数。这种方式可以让服务器动态生成数据,无需使用任何第三方库。

      当你尝试使用JSONP来请求带有查询参数的URL时,可能会遇到一些问题。首先,JSONP的请求方式需要在URL中加入?callback=callback_function。但是,这个参数可能被URL解析器过滤掉。其次,如果服务器在响应中提供了JSONP格式的数据,但没有提供对应的回调函数,那么浏览器会错误地认为这是一个普通请求,而不是JSONP请求。

      如果你遇到这个问题,你可以尝试以下几种解决方案:

      1. 在URL中加入?callback=callback_function。如果服务器在响应中提供了JSONP格式的数据,那么你可以在请求中使用这个参数。

      2. 使用script标签来加载服务器的JSONP代码。但是,这种方法可能会有安全风险,因为服务器可能会通过其他方式来欺骗浏览器。

      3. 使用服务器的JSONP API来处理请求。这种方法需要服务器有一个JSONP API,你可以通过JavaScript来调用这个API。

      4. 如果服务器不支持JSONP,你可以考虑使用XMLHttpRequest来请求带有查询参数的URL。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部