把recaptcha响应放到一个knockout js可观察对象中
put recaptcha response into a knockout js observable
我使用谷歌验证码,我要做的是把响应到一个可观察的,然后将其发送到后端服务器。我在努力,但我失败了。以下是代码。
<div class="form-group">
<div class="col-sm-8">
<div class="g-recaptcha" data-sitekey="############"></div>
</div>
</div>
下一段代码在js文件中带有knockout
self.recaptchaCode = ko.observable($('.g-recaptcha-response').val()); // Does not work
这是ajax发送到后端
$.ajax({
type: 'POST',
url: BASEURL + 'index.php/login/loginUsingAjax/' + auth,
contentType: 'application/json; charset=utf-8',
data: ko.toJSON({
email : self.eMail(),
password : self.passWord(),
recaptcha : self.recaptchaCode()
})
})
我想我没有得到正确的方式来获得响应到可观察的
这一行:
self.recaptchaCode = ko.observable($('.g-recaptcha-response').val());
用你的元素在创建可观察对象时的值设置该可观察对象。当你请求可观察对象的值(self.recaptchaCode()
)时,它是而不是重新求值;您收到一个缓存的响应。
这意味着只有在实例化视图模型时元素的值可用时,代码才能工作。Knockout不能神奇地监视非数据绑定的DOM元素。
我建议创建一个方法而不是一个可观察对象:
self.getRecaptchaCode = function() {
return $('.g-recaptcha-response').val();
};
最好是在元素上创建value
绑定,但我不确定您是否可以访问DOM的.g
部分…在这种情况下,您可以使用"真正的"淘汰方法:
<input data-bind="value: recaptchaCode">
与self.recaptchaCode = ko.observable()
在您的视图模型
相关文章:
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- Knockout.JS标签在foreach内部不起作用
- 使用Knockout JS从下拉框中向observalearray添加项
- 使用knockout.js将数组绑定到视图模型
- 如何使用Jasmine测试Knockout.js点击绑定
- 类似于Prism的Knockout js框架
- Knockout JS和简单的函数
- Knockout.js中带有if:子句的嵌套循环
- Knockout JS中具有下拉列表的数组
- Knockout.JS,模板都是通过表单不添加数据的
- 在Knockout JS中搜索从DB加载数据的项目
- 使用Knockout.js动态更改facebook数据
- $root在knockout.js中解析为空白页
- knockout.js中的绑定多下拉列表
- 在Knockout js中创建一个包含多行的表,而不需要推送
- 如何基于Knockout js模型设计控件样式
- 从对象内部调用knockout.js ko.applyBindings()
- Breeze.js + Knockout.js Tutorials
- 不能动态加载jquery, bootstrap, D3.js, knockout.js的CDN