如何发送对ajax请求的响应,然后重定向用户而不向他显示响应?
我已经能够将数据发送到服务器但是我无法将响应发送回JavaScript文件,然后重定向用户。
如果删除redirect(302, '/')
,我可以在浏览器上看到json结果,但我想将数据发送到ajax请求,然后重定向。
路线
var express = require('express');
var url = require('.././models/first.js');
var router = express.Router();
router.get('/', function(req,res) {
res.render('index');
res.end();
})
router.post('/add',function(req,res) {
var patt = /(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g;
var url = req.body.url //This variable gets the value
if(patt.test(url) === false) {
res.send({mes: 'Invalid'},
res.redirect(302,'/')); // this data doesn't reach the file.
} else {
res.send({mes: 'Okay'},
res.redirect(302,'/'));
}
})
module.exports = router;
外部/静态javascript文件
$(document).ready(function() {
$('#urlform').submit(function(e) {
var patt = /(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g;
var url = $("#area").val();
$.ajax({
type: 'POST',
dataType: "jsonp",
data: {url: url},
url: 'localhost:7000/add',
success: function(data) {
$('#url').text(data.url);
}
})
})
})
index.jade
extends ../public/layouts/default
block content
#onlydiv
#onlydiv-inside
p Paste your URL below to shorten it
form#urlform(action='/add', method='post')
input#area(type='text' name='url', placeholder = 'www.facebook.com', autocomplete = 'off' required)
input#button(type='submit')
p#url