ajax响应没有加载div

时间:2014-03-08 06:10:47

标签: php jquery ajax

我有一个表单验证类,它返回一个错误数组。

 $.ajax({
    type: "POST",
    url: "/oop/register.php",
    data: data,
    success: function(response){
        alert(response);
        var emptyDiv= $('<div></div>');

        jQuery.each(response, function(i, val){
            emptyDiv.clone().insertAfter('ul#state-list li:nth-child(' + val + ')');
        });
        $('#signupalert').append(emptyDiv);
        $('#signupalert').fadeIn('slow');
}});

警报显示响应是一个错误数组,但在控制台中我收到以下错误:

   Uncaught TypeError: Cannot use 'in' operator to search for '209' in Array
(
    [0] => username is required
    [1] => first_name is required
    [2] => last_name is required
    [3] => password is required
    [4] => confirm_password is required
 ...<omitted>...)

1 个答案:

答案 0 :(得分:1)

我建议使用普通for而不是jQuery.each可能返回的响应不是javascript数组对象

$.ajax({
type: "POST",
url: "/oop/register.php",
data: data,
success: function(response){
    response = jQuery.parseJSON(response);
    alert(response);
    var emptyDiv= $('<div></div>');

    for(var x = 0; x < response.length; x++) {
       emptyDiv.clone().insertAfter('ul#state-list li:nth-child(' + response[x] + ')')
    }
    $('#signupalert').append(emptyDiv);
    $('#signupalert').fadeIn('slow');
}});

另外要确保response[x]是您要查找的字符串值,请尝试提醒它;或者您也可以在浏览器的开发模式下检查响应的实际值,或者如果您有一些像Fiddler这样的工具使用那个,只是为了确保响应值是普通数组或数组对象