【问题标题】:jQuery validation plugin, remote calljQuery验证插件,远程调用
【发布时间】:2009-10-22 16:20:17
【问题描述】:

我正在使用 jQuery 的验证插件来验证用户名。不知何故,我的 json 请求数据无效,我不知道为什么。代码如下:

remote: {
                    url: "blablabla",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    data: '{"username":"' + function () { return $("#username").val() } + '"}'
                }

当我检查请求时,json 数据如下所示:

{"username":"function () {
    return $("#username").val();
}"}

你有什么建议吗?

【问题讨论】:

    标签: jquery validation


    【解决方案1】:

    看起来您的函数没有在评估。您是否可以在调用之前运行它并将实际返回值放入数据中?

    【讨论】:

    • 如果我这样重写它:"data: '{"username":"' + getUsername() + '"}'",那么它工作正常,但是我真的很想使用在这种情况下使用匿名函数。
    • 通过 onSuccess 中的邪恶 eval 运行它
    • 嗯 - 我想知道这是否可行data: '{"username":"' + function () { return $("#username").val() } + '"}()'
    • onSuccess 是不是太晚了?我的意思是我想在调用webservice时执行该函数,据我所知,在收到响应时会调用onSuccess?关于你的第二个想法 - 它没有用:(
    • 所以你想将用户名值传递给服务器,验证然后以太接受还是失败?在这种情况下,如果您有错误(例如重复名称),您应该让 ajax 调用失败,然后在 onError 调用中进行处理。您的回调不会在服务器上进行评估 - 它只能发生在客户端上
    【解决方案2】:

    要写一个自执行函数,先用括号括起来:

    (function () { return $("#username").val() })()
    

    【讨论】:

    • 我试过了,但是我在网络服务中得到一个空字符串(而不是文本框的实际值)
    • “在网络服务中”是什么意思?该回调仅在您的浏览器中执行时才有意义,该浏览器具有带有“用户名”ID 的框。你能详细说明一下吗?
    • 这个函数(像这样包装)返回一个空字符串“”,而不是实际值。
    • 老实说,我很困惑为什么您将所有内容都编码为字符串。我相信你可以设置data: {var1: 'asdf', var2: 'sdfg'} 和 jquery 应该处理其余的。此外,在这种情况下,自执行功能不会为您带来任何好处,您有什么理由尝试使用它?
    • 由于 web 服务端 (wcf),所有内容都被编码为字符串。我正在使用自执行功能,因为你给了我这个想法......
    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多