Javascript 从REST获取数据并重定向到另一个页面

Javascript 从REST获取数据并重定向到另一个页面,javascript,jquery,html,rest,Javascript,Jquery,Html,Rest,我正在学习HTML和javascript。我被困在一个地方。我的要求是调用RESTAPI并获取值,然后将页面重定向到另一个URL 代码段: HTML 当我点击Submit时,REST服务的响应为TRUE。但是我重定向到的URL会自动与HTML的action字段中提到的REST URL匹配。但我想从REST获取数据,然后将用户重定向到另一个页面。我在这里讲得通吗。请帮助我。是提交触发重定向。 我建议您使用AJAX调用,如下所示: var xhttp = new XMLHttpRequest();

我正在学习HTML和javascript。我被困在一个地方。我的要求是调用RESTAPI并获取值,然后将页面重定向到另一个URL

代码段:

HTML


当我点击Submit时,REST服务的响应为TRUE。但是我重定向到的URL会自动与HTML的action字段中提到的REST URL匹配。但我想从REST获取数据,然后将用户重定向到另一个页面。我在这里讲得通吗。请帮助我。

是提交触发重定向。 我建议您使用AJAX调用,如下所示:

var xhttp = new XMLHttpRequest();
xhttp.open("GET", "http://localhost:51349/SMS_Rest.svc/v1/CheckBox?graphId=" + graphId, true);
xhttp.send();
var response = xhttp.responseText;
document.location.href="redirectionTarget";
获取请求的响应,如果正确,则如下重定向:

var xhttp = new XMLHttpRequest();
xhttp.open("GET", "http://localhost:51349/SMS_Rest.svc/v1/CheckBox?graphId=" + graphId, true);
xhttp.send();
var response = xhttp.responseText;
document.location.href="redirectionTarget";

编辑:原生javascript有点蹩脚,您可能希望使用类似于jquery的库,正如Leeish所提到的。

是提交触发了重定向。 我建议您使用AJAX调用,如下所示:

var xhttp = new XMLHttpRequest();
xhttp.open("GET", "http://localhost:51349/SMS_Rest.svc/v1/CheckBox?graphId=" + graphId, true);
xhttp.send();
var response = xhttp.responseText;
document.location.href="redirectionTarget";
获取请求的响应,如果正确,则如下重定向:

var xhttp = new XMLHttpRequest();
xhttp.open("GET", "http://localhost:51349/SMS_Rest.svc/v1/CheckBox?graphId=" + graphId, true);
xhttp.send();
var response = xhttp.responseText;
document.location.href="redirectionTarget";

编辑:原生javascript有点蹩脚,您可能希望使用类似于jquery的库,正如Leeish所提到的。

根据您在问题中使用的内容,您正在使用表单进行REST调用?这不是进行REST通话的常用方式。但是如果您坚持这样做,您需要更改REST服务的响应,以使用重定向进行响应,例如:

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/otherpage
另一种方法是将表单发布到非REST端点上,例如,该端点将执行表单验证。如果需要在执行其他客户端验证之前调用REST服务,则应在提交表单onsubmit事件之前使用window.XMLHttpRequest异步处理REST调用。关于如何实现这一点,这里有更多详细信息:


但是,根据您的用例,您可能只需要正常地发布表单。但是,向REST服务提交表单可能不是您想要使用的标准方法。

根据您在问题中使用的方法,您是在使用表单进行REST调用吗?这不是进行REST通话的常用方式。但是如果您坚持这样做,您需要更改REST服务的响应,以使用重定向进行响应,例如:

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/otherpage
另一种方法是将表单发布到非REST端点上,例如,该端点将执行表单验证。如果需要在执行其他客户端验证之前调用REST服务,则应在提交表单onsubmit事件之前使用window.XMLHttpRequest异步处理REST调用。关于如何实现这一点,这里有更多详细信息:


但是,根据您的用例,您可能只需要正常地发布表单。但是,向REST服务提交表单可能不是您想要使用的标准方法。

我能想到的最佳解决方案是使用AJAX提交表单,然后重定向到您想要的URL:

首先,您需要jQuery表单插件- 然后在将id=rest表单添加到表单之后:

jQuery("#rest-form").submit(function(e){
    //The following stops the form from redirecting
    e.preventDefault();
    jQuery("#rest-form").ajaxSubmit({
        type: 'GET',
        url: jQuery('#rest-form').attr('action'),
        data: jQuery('#rest-form').serialize(),
        success: function (data) {
            //The data variable will contain the response data
            //if it's successful, you can no redirect wherever you want
            window.location.href = "http://www.example.com";
        }
    });
});

我能想到的最佳解决方案是使用AJAX提交表单,然后重定向到您想要的URL:

首先,您需要jQuery表单插件- 然后在将id=rest表单添加到表单之后:

jQuery("#rest-form").submit(function(e){
    //The following stops the form from redirecting
    e.preventDefault();
    jQuery("#rest-form").ajaxSubmit({
        type: 'GET',
        url: jQuery('#rest-form').attr('action'),
        data: jQuery('#rest-form').serialize(),
        success: function (data) {
            //The data variable will contain the response data
            //if it's successful, you can no redirect wherever you want
            window.location.href = "http://www.example.com";
        }
    });
});

我想您应该注意通过ajax获取数据,完成后,使用javascript重定向。不要将表单提交到API。阅读jQueryAjax调用。我想您应该注意通过AJAX获取数据,完成后,使用javascript重定向。不要将表单提交到API。阅读jQueryAjax调用。你完全正确。因为我学习所以我没有这一切的想法。我应该更改代码。你完全正确。因为我学习所以我没有这一切的想法。我应该更改代码。