ajax post方法错误

时间:2014-08-03 11:07:49

标签: javascript jquery ajax json

在下面的示例中,我能够传递国家/地区列表的JSON表示并显示它,但我无法显示消息"找不到任何国家"。您能否查看下面的代码:

控制器:

if ($this->model_abc->did_get_country_list($user_id)) {             
        $country["results"]= $this->model_abc->did_get_country_list($user_id);          
            echo json_encode($country);         
        }
        else {      
        $country = array('message' => "Could not find any countries" );
            echo json_encode($country);     
        }

JS档案:

$.post('cont/get_country_list', function (country) {
    $.each(country.results, function(i, res) {
        var item = $('<div>'),               
        title = $('<h3>');
        title.text(res);
        item.append(title);
        item.appendTo($("#country_list_is_got"));
    });   
}, 
       "json").error(function() { 
           $( "#country_list_is_not_got").text(country.message);
       });

更新

我将代码更改为以下内容,现在我从控制台收到错误:未捕获的TypeError:无法读取属性&#39; length&#39;未定义

JS档案:

$.post('cont/get_country_list', function (country) {
    if (country.message !== undefined) {
        $( "#country_list_is_not_got").text(country.message);
    } else {
        $.each(country.results, function(i, res) {
             var item = $('<div>'),               
                 title = $('<h3>');
                 title.text(res);
                 item.append(title);
                 item.appendTo($("#country_list_is_got"));
        });  


 }
});

2 个答案:

答案 0 :(得分:1)

仅当服务器使用500-HTTP代码(或404,403或超时等)响应时才会调用错误函数。您只返回具有正常HTTP状态代码的有效JSON,因此调用success-function。在该成功函数中,您应该检查是否有消息:

$.post('cont/get_country_list', function (data) {
    if (data.message !== undefined) {
        $( "#country_list_is_not_got").text(data.message);
    } else {
        $.each(country.results, function(i, res) {
             var item = $('<div>'),               
                 title = $('<h3>');
                 title.text(res);
                 item.append(title);
                 item.appendTo($("#country_list_is_got"));
        });   
    }
});

答案 1 :(得分:0)

在没有找到国家/地区的情况下,您没有设置错误回复代码,因此jQuery不会将其视为错误。

else {
    header("HTTP/1.1 500 Error");
    $country = array('message' => "Could not find any countries" );
    echo json_encode($country);
}

此外,您的错误函数需要从其参数中获取数据:

.error(function(xhr) {
    country = $.parseJSON(xhr.responseText);
    $( "#country_list_is_not_got").text(country.message);
});