jquery - 将函数文本返回到字符串
问题描述
我有一个验证登录的功能:
var checkLogin = async (email, pass, captcha) => {
alert('Checking login')
return $.ajax("/users/ajax_login", {
data: {
email: email,
pass: pass,
captcha: captcha
},
}).done((response) => {
console.log('Done ', response)
}).fail(error => {
console.log('Error ', error)
})
.always(response => {
console.log('always ', response)
}).then(msg => {
console.log('login response: ' + msg);
return msg;
})
}
它返回一个字符串,告诉我登录是否成功。当我检查响应时,它似乎是一个对象,而不是字符串,这意味着我无法正确解析它(例如,检查响应是否是一个字符串,例如good
)。
所以这段代码:
var loginResponse = checkLogin(email, pass, captcha );
loginResponse = loginResponse.toString();
console.log('first 4 chars: ' + loginResponse.substring(0,4));
将写入[obj
控制台。
我将如何正确地将响应转换为我可以解析的字符串?
谢谢
解决方案
当我检查响应时,它似乎是一个对象而不是字符串,这意味着我无法正确解析它
没错,async
函数总是返回 Promise 对象,用于观察异步操作的结果。
要使用该字符串,您需要使用 Promise。有两种方法:
使用它的
then
和catch
方法:checkLogin(/*...*/) .then(result => { // Use `result` here, presumably it's a string if `checkLogin`'s docs say it will be }) .catch(error => { // Handle or report `error` here, something went wrong in `checkLogin`'s asynchronous processing });
如果您
catch
将承诺返回给调用函数(应该处理错误),则可以省略。使用
await
(在async
函数内部):try { const result = await checkLogin(/*...*/); // Use `result` here, presumably it's a string if `checkLogin`'s docs say it will be } catch (e { // Handle or report `error` here, something went wrong in `checkLogin`'s asynchronous processing }
catch
如果您想将处理错误留给调用函数,您可以省略。
推荐阅读
- ruby-on-rails - 如何在 Rails 中配置 CORS 接受标头
- python - Scraping HTML from array of links
- c# - 遍历列表时获取空值
- ssl - 如何从 Google Cloud Platform 上的负载均衡器中删除 SSL 证书?
- jquery - 如何使用 jquery-ajax 使用复选框制作级联下拉菜单?
- javascript - 获取支持的货币列表
- objective-c - 无法保存文档“queue.h”
- elasticsearch - 在 Kibana 中删除/隐藏管理菜单
- azure-iot-hub - 如何在 Azure IOT 集线器设备数据上配置警报
- c# - 如何在 Linux 的 dotnet core 中使用真正的异步文件 I/O?