我为用户创建了一个输入表单域,用于输入他们从 Coldfusion 的 cfimage 标签创建并存储在会话变量中的图像中看到的验证码。当用户在输入表单域中输入验证码时,jQuery 调用 Coldfusion CFC 来检查用户输入的验证码是否与会话变量匹配。如果用户匹配验证码,则显示提交按钮。在响应回来之前,一切似乎都运行良好。这是我的代码。
HTML
<input type="text" id="mailform-input-captcha" name="captcha" placeholder="Type in Captcha *" data-constraints="@NotEmpty"/>
jQuery
$(document).ready(function() {
$('#mailform-input-captcha').keyup(function(){
var captcha = $('#mailform-input-captcha').val();
$.ajax({
type: "POST",
url: "cfc/handy.cfc?method=chk_captcha&returnformat=json",
datatype: "json",
data: {
captcha: captcha
},
cache: false,
success:function(data) {
if(data && data.length) { // DO SOMETHING
$.each(data, function(i, val) {
console.log(val);
console.log(data[i].status);
// *** SUCCESS ***
if(status == "SUCCESS") { // DO SOMETHING
$('.btn').show();
alert(status);
// *** FAIL ***
} else if(status == "FAIL"){ // DO SOMETHING
$('.btn').hide();
}
});
}
}
});
});
如果我在输入表单域中键入字母,则响应作为来自 CFC 的结构数组返回。这是响应的示例。
回复
[{"STATUS":"FAIL"}]
当我查看 chrome 调试器时,我看到以下内容:
该站点正在使用 jQuery 1.7.1 我尝试过较新版本的 jQuery,但没有看到任何变化。这个脚本在其他网站上运行得很好。感谢您提供的任何意见。
你有一个错字,datatype
其中应该是dataType
返回适当的内容类型标头也是一个好主意。由于dataType
未设置且标头不是 application/json,因此似乎将响应视为文本
另请注意,javascript 区分大小写,因此您需要检查data[i].STATUS
或更改输出
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句