$.post()没有实现跳转页面,到底是我前端的问题还是后端的问题?求教育


需求描述

  1. 点击 form表单1 中的提交按钮 按钮bt1 ,通过 ajax 验证是否登录。

  2. ajax 返回 已经登录 ,提交 form表单1 中的数据到后台,后台进行处理,并返回 渲染页面 .

  3. ajax 返回 未登录 ,用 $formData=$targetForm.serialize() 存储 form表单1 的表单数据,然后弹出 bootstrap modal modal 是一个登录窗口。

  4. 用户输入 登录表单内容 ,这里我用了 formValidation 插件进行验证(因为实现国际化,这个插件在这方面做得很好)。

  5. formValidation 验证通过后,提交 登录form表单 ,通过 ajax 验证 登录是否成功

  6. ajax 返回 登录成功 ,用 $.post() 发送 form表单1 的数据到后端(我在 chrome network 确定 已经 成功 发送到正确的 地址

一切都好像好顺利啊,然而,然而....

后台没有返回渲染页面啊!

后台没有返回渲染页面啊!

后台没有返回渲染页面啊!

(重要的话要说三遍)

省略掉一些不重要掉事情(可能也是最重要的细节):用 /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security 这个方法解决了 ajax跨域问题

post java Ajax

五星红内裤 9 years, 10 months ago

正常的登陆逻辑来说,应该是验证成功后,后端重定向到登陆成功的页面,或者失败的页面,这个你应该问问后端的,看看他们是怎么处理的,另外你可以在$.post()中的success与error回调中获取一下返回给你的数据

实玖琉光束 answered 9 years, 10 months ago

1)你先check下ajax给你返回了什么~~~
2)返回渲染页面 是指给你一个重定向的url还是一个HTML内容,需要你append到当前页面上?
3 )你从浏览器本身的角度来解决跨域问题,是用了nw.js/electron类似的框架吗?

说好的吉跋猫呢 answered 9 years, 10 months ago

http://stackoverflow.com/questions/133925/javascript-post-request-like-a-form-submit



 var $form = $('<form method="POST" action="' + urlAction + '">');
$.each(data, function (k, v) {
    $form.append('<input type="hidden" name="' + k + '" value="' + v + '">');
});
$form.submit();

salvia answered 9 years, 10 months ago

用ajax回调来确认是否已登陆再对应上传或登录弹框,这个过程存在登陆状态被篡改的风险

任性de私房猫 answered 9 years, 10 months ago

第二步有问题,已经登陆之后如果需要返回渲染页面的话最好做js跳转。如果用ajax其实也可以,只不过需要前端把接受到的渲染之后的页面代码动态加载显示,比较复杂。

Mikoto丶 answered 9 years, 10 months ago

完全不明所以, 问的是 post 不能跳转页面, 而最后又说跨域问题?
首先 post 是不可能跳转页面的, 而且 post 也不能够实现跨域 ajax 的.
若想跳转页面可通过 window.location.href='http://example.com'
这种方式实现

3056498 answered 9 years, 10 months ago

Your Answer