回应快递中的AJAX请求

时间:2016-02-06 16:00:06

标签: javascript jquery ajax node.js express

如何发送对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

0 个答案:

没有答案