提取可以代替AJAX吗?

时间:2019-01-09 01:00:43

标签: ajax express fetch-api

我想知道是否有可能提取传统Ajax所能做的所有事情? 因为我在使用express进行简单的登录身份验证时遇到问题。如果用户名/密码不正确,我想发送诸如“登录错误”的响应,或者如果两者均正确,则将用户重定向到首页,而不刷新页面。

我了解您可以在AJAX中执行此操作,但是否也可以在获取中执行此操作?

我尝试使用express js并通过json发送响应,但是我不知道如何在不刷新页面的情况下处理响应。

我试图在快递服务器中这样做

def get_proxy(proxy_list):
    '''
    (list) -> dict
    Given a proxy list <proxy_list>, a proxy is selected and returned.
    '''
    # Choose a random proxy
    proxy = random.choice(proxy_list)

    # Split up the proxy
    proxy_parts = proxy.split(':')

    # Set up the proxy to be used
    try:
        proxies = {
            "http": "http://" + proxy_parts[2] + ":" + proxy_parts[3] + "@" +\
            proxy_parts[0] + ":" + proxy_parts[1],
            "https": "https://" + proxy_parts[2] + ":" + proxy_parts[3] + "@" +\
            proxy_parts[0] + ":" + proxy_parts[1]
        }
    except:
        proxies = {
            "http": str(proxy),
            "https": str(proxy)
            }

    # Return the proxy
    return proxies

在客户端,特别是在登录页面上,我有这个可处理信息提交的javascript

//if valid
res.json({
    isValid: true
})

//if invalid
res.json({
    isValid: false
})

1 个答案:

答案 0 :(得分:1)

您太亲密了!您已经获取了内容,然后使用response.json对其进行了解析,因此接下来是.then()。这样,您就可以将JSON对象传递到名为data的参数中。您需要做的就是检查它是否具有isValid属性!

fetch('https://localhost:3000/auth', {
    method: 'post',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify({
        username,
        password
    })
})
.then(response => response.json())
.then(data => {
     if(data.isValid){
       // Do something with a valid user. Redirect or whatever.
     } else {
       // Here, isValid is not set, or is false.
       //  Send them packing!
     }
    }
})
.catch(err => console.error("I died: ", err) );

也请看一下.catch()块-发生错误时,捕获fetch()then()抛出的错误。因此,您需要为错误添加一个参数,并添加一个函数体来处理该错误。我已经编辑了代码示例以进行演示。

实际上不会在这里运行,但是它的格式很漂亮。