window.location.href=res.data;
时间: 2024-05-15 10:09:54 浏览: 253
window.location.href=res.data; 是一段JavaScript代码,它用于在浏览器中将当前页面的URL重定向到res.data指定的URL。具体来说,window.location是一个包含有关当前URL的对象,而href属性表示当前页面的URL。通过将其设置为res.data,可以将当前页面重定向到res.data指定的URL。
相关问题
在vue中window.location.href = res.data.url;打开了这一个页面,这个页面里面有个回调页面,怎么在前端拿到回调页面的地址
如果回调页面是在同一个域中,可以使用window.location获取回调页面的地址。例如,在回调页面中可以使用以下代码获取当前页面的URL:
```
var callbackUrl = window.location.href;
```
如果回调页面跨域,可以在URL参数中传递回调地址,例如:
```
window.location.href = res.data.url + '?callbackUrl=' + encodeURIComponent(window.location.href);
```
在回调页面中可以使用以下代码获取回调地址:
```
var callbackUrl = decodeURIComponent(getQueryString('callbackUrl'));
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
```
这里使用了JavaScript的正则表达式来解析URL参数。注意使用encodeURIComponent和decodeURIComponent对URL参数进行编码和解码。
var createOrder = function () { let tj = 1 storage.setItem('tj', tj) console.log(payType) var orderJson = { payType: storage.getItem('payType'), price: storage.getItem('price'), payPrice: storage.getItem('price'), mobile: storage.getItem("ureId"), wxInside: isWeiXin ? 1 : 0, orderType: 0, caId: storage.getItem('caId'), caLinkId: storage.getItem('id'), aoId: storage.getItem('a_oId'), } $.ajax({ type: 'POST', dataType: 'json', data: JSON.stringify(orderJson), url: requestUrl + '/api/aliPayConfig/aliPay', contentType: "application/json; charset=utf-8", success: function (res) { console.log(res, '下单返回数据'); var orderId = res.data.orderId storage.setItem('orderId', orderId) if (res.data.wxDomain) { window.location.href = res.data.wxDomain + '?mwebUrl=' + encodeURIComponent(res.data.mwebUrl) + '&mwebForm' + encodeURIComponent(res.data.mwebForm) return false } // 微信内外 if (res.data.mwebUrl) { window.location.href = res.data.mwebUrl return false } // 支付宝 if (res.data.mwebForm) { $('body').append(res.data.mwebForm) return false } }, error: function () { toast('接口请求失败,请重试') } }) } 优化这段代码
这段代码主要是用于创建订单和进行支付操作。以下是我对这段代码的优化建议:
1. 将变量tj的赋值和存储操作合并,可以直接使用storage.setItem('tj', 1)来替代。
2. 将orderJson中的各个字段的获取和存储操作分离,可以先获取各个参数的值并存储到变量中,然后再将这些变量传递给orderJson,这样可以提高代码的可读性和可维护性。
3. 将$.ajax方法中的success和error回调函数改为Promise方式,这样可以更方便地进行错误处理和异步操作。
根据以上建议,优化后的代码如下:
```javascript
var createOrder = function () {
storage.setItem('tj', 1);
console.log(payType);
var payType = storage.getItem('payType');
var price = storage.getItem('price');
var caId = storage.getItem('caId');
var id = storage.getItem('id');
var a_oId = storage.getItem('a_oId');
var mobile = storage.getItem('ureId');
var wxInside = isWeiXin ? 1 : 0;
var orderType = 0;
var orderJson = {
payType: payType,
price: price,
payPrice: price,
mobile: mobile,
wxInside: wxInside,
orderType: orderType,
caId: caId,
caLinkId: id,
aoId: a_oId,
};
return new Promise(function(resolve, reject) {
$.ajax({
type: 'POST',
dataType: 'json',
data: JSON.stringify(orderJson),
url: requestUrl + '/api/aliPayConfig/aliPay',
contentType: "application/json; charset=utf-8"
}).done(function(res) {
console.log(res, '下单返回数据');
var orderId = res.data.orderId;
storage.setItem('orderId', orderId);
if (res.data.wxDomain) {
window.location.href = res.data.wxDomain + '?mwebUrl=' + encodeURIComponent(res.data.mwebUrl) + '&mwebForm' + encodeURIComponent(res.data.mwebForm);
resolve();
} else if (res.data.mwebUrl) {
window.location.href = res.data.mwebUrl;
resolve();
} else if (res.data.mwebForm) {
$('body').append(res.data.mwebForm);
resolve();
} else {
reject();
}
}).fail(function() {
reject();
});
});
};
```
以上是我对这段代码的优化建议,希望能对你有所帮助。
阅读全文