Ajax .keyup 操作的响应未定义
Ajax response undefined on .keyup operation
我为用户创建了一个输入表单域,用于输入他们从 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 调试器时,我看到以下内容:
- console.log(val);记录数组中的每个字符
而不是每个结构。
- console.log(数据[i].status);记录为 "undefined".
该站点正在使用 jQuery 1.7.1 我已经尝试了更新版本的 jQuery,但没有看到任何变化。该脚本在其他站点上运行良好。感谢您的任何意见。
您在 datatype
中有错字,应该是 dataType
return 适当的内容类型 header 也是个好主意。由于未设置 dataType
且 header 不是 application/json,因此似乎将响应视为文本
另请注意 javascript 区分大小写,因此您需要检查 data[i].STATUS
或更改输出
我为用户创建了一个输入表单域,用于输入他们从 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 调试器时,我看到以下内容:
- console.log(val);记录数组中的每个字符 而不是每个结构。
- console.log(数据[i].status);记录为 "undefined".
该站点正在使用 jQuery 1.7.1 我已经尝试了更新版本的 jQuery,但没有看到任何变化。该脚本在其他站点上运行良好。感谢您的任何意见。
您在 datatype
中有错字,应该是 dataType
return 适当的内容类型 header 也是个好主意。由于未设置 dataType
且 header 不是 application/json,因此似乎将响应视为文本
另请注意 javascript 区分大小写,因此您需要检查 data[i].STATUS
或更改输出