jQuery ajax调用返回URL并加载到框架或div中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery ajax调用返回URL并加载到框架或div中相关的知识,希望对你有一定的参考价值。

我有一个客户端Web应用程序,它是所有静态htmljavascript,并且我使用JQuery。我更多地是使用Spring的后端/中间件人员,因此我对前端的东西并不满意。

我有一个RESTful API,从我的客户端UI到我作为控制器编写的以Spring编写的中间件Web应用程序。我可以成功地调用它,并且存在中间件业务逻辑,在该逻辑中我可以使用第三方API并返回HTML。我将此HTML返回给客户端,并试图将其加载到iframe或div标签中。当然,我遇到了各种JavaScript错误和很多CORS问题。因此,如果这不是从另一个网站获取HTML并将其部署在我的页面上的可行选择,那么我愿意放手。

我在后端创建了另一个RESTful API,现在它仅返回该第三方RESTful API的URL。具体来说,我正在调用Coinbase的授权页面,但是它很容易就是任何其他第三方授权页面。我有他们推荐的完整URL,并且已经准备好使用它。

所以,我得到了这样的URL(dataType是'文本'),并且可以看到它并发出警报:

https://www.coinbase.com/oauth/authorize?
  response_type=code&client_id=MY_CLIENT_ID
  &redirect_uri=MY_REDIRECT_URL
  &state=SECURE_RANDOM
  &scope=wallet:accounts:read

我想我将按如下所示进行重定向:

window.location.replace(response);

但是,发生的是我得到一个HTTP 404,因为我的系统正在将UI locahost预先添加到该URL。因此,它看起来像:

http://localhost:8080/my_web_ui_app/https://www.coinbase.com/oauth/authorize?
  response_type=code&client_id=MY_CLIENT_ID
  &redirect_uri=MY_REDIRECT_URL
  &state=SECURE_RANDOM
  &scope=wallet:accounts:read

显然,当我收到HTTP 404错误时,这将无法正常工作。

还有什么我应该尝试的?就像我说的那样,我不是UI方面的好人,但我只需要可以正常使用的东西。

谢谢!

答案

这是Ajax本身。

$.ajax(
        url : 'http://localhost:8080/myapp-be/api/myrestapi/authorize',
        headers : 'token' : token,
        dataType: 'text',
        cache: false,
           success: function(response) 
               console.log(response)
               $(location).attr('href',response);
           
    );

dataType:“文本”是罪魁祸首。

URL是响应,并且作为“文本”,它在响应周围添加了另一层引号。

[一旦我从Ajax调用中删除了dataType,那么默认的dataType就会起作用,并且我不再获得带有额外引号的URL。成功后,我能够进行简单的重定向并且成功了。是一个简单的解决方法。

感谢Chrome和调试工具的出色使用,因此我看到返回的响应周围带有多余的引号。

以上是关于jQuery ajax调用返回URL并加载到框架或div中的主要内容,如果未能解决你的问题,请参考以下文章

Javascript-- jQuery Ajax应用

使用ajax()方法加载服务器数据

jQuery框架中$.ajax()的常用参数有哪些?写一个post请求并带有发送数据和返回数据的样例

前端Ajax/JS/HTML+后端SpringMVC

等到jquery ajax请求完成并返回值

jquery学习笔记ajax