JQuery Ajax错误{" readyState":0," responseText":""," status":0," statusText&# 34;:" OK"}

时间:2014-12-11 05:54:18

标签: javascript php jquery ajax codeigniter

我尝试根据作为参数传递并通过ajax发送的国家/地区获取城市。但对于一些国家,我可以获得城市并更新我的表格与这些城市,为了反对其他我有这个错误

{"readyState":0,"responseText":"","status":0,"statusText":"OK"}

当我查看那些返回错误的国家/地区的日志时,我会记下从数据库中检索到的城市名称。

我不明白为什么会出现这个错误。  我该如何解决?

请在下面找到我的代码

模型

 function get_ville_depart($country = null){
        $this->db->select('NUMVILLEDEPART, NOMVILLEDEPART')->from('villedepart');
        $this->db->join('pays','pays.NUMPAYS=villedepart.numpays');
        $this->db->where('pays.NUMPAYS', $country);
        $this->db->order_by("NOMVILLEDEPART","asc");
        $query = $this->db->get();
        $cities = array();

        if($query->result()){
            foreach ($query->result() as $city) {
                $cities[$city->NUMVILLEDEPART] = $city->NOMVILLEDEPART;
            }
            return $cities;
        }else{
            return FALSE;
        }
    }

控制器

 function get_ville_depart($country){
        foreach($this->ville_model->get_ville_depart($country) as $ville){
            log_message('debug',json_encode($ville));
        }
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode($this->ville_model->get_ville_depart($country));
    }

查看

$('#paysdepart').on("change",function(){
                $("#villedepart > option").remove();
                var country_id = $('#paysdepart').val();
                var base_url="<?= site_url('annonce');?>";
                $.ajax({
                    type: "GET",
                    url: base_url+"/get_ville_depart/"+country_id,
                    dataType:'json',
                    success: function(cities)
                    {
                        if(!jQuery.isEmptyObject(cities))
                        {
                            $("#ifnotvilledepartindatabase").hide();
                            $("#dynamicvilledepart").show();
                            $.each(cities,function(NUMVILLEDEPART,NOMVILLEDEPART)
                            {
                                var opt = $('<option />');
                                opt.val(NUMVILLEDEPART);
                                opt.text(NOMVILLEDEPART);
                                $('#villedepart').append(opt);
                            });
                        }else
                        {
                            $("#dynamicvilledepart").hide();
                            $("#ifnotvilledepartindatabase").show()
                        }
                    },
                    error:function(error)
                    {
                        alert("Error "+JSON.stringify(error));
                        $("#dynamicvilledepart").hide();
                        $("#ifnotvilledepartindatabase").show()
                    }
                });
            });

2 个答案:

答案 0 :(得分:0)

那些没有任何城市的国家/地区出错。

    if($query->result()){
        foreach ($query->result() as $city) {
            $cities[$city->NUMVILLEDEPART] = $city->NOMVILLEDEPART;
        }
        return $cities;
    }else{
        return new stdClass; /* Only this line have to change */
    }

使用直接网址查看特定国家/地区ID的错误。 如果罚款,我已经在当地测试了一切。

答案 1 :(得分:0)

对我来说一切似乎都很好,但在这里我猜你的代码: ==&GT;确保国家ID永远不等于空 1 - 在你的模型中,改变它,

if($query->result()){
    foreach ($query->result() as $city) {
    $cities[$city->NUMVILLEDEPART] = $city->NOMVILLEDEPART;
    return $cities;
}
else{
    return FALSE;
}

到此:

if($result = $query->result_array())
    $cities = array_column($result, 'NOMVILLEDEPART', 'NUMVILLEDEPART');

return $cities;

2 - 在你的控制器中,改变这个:

function get_ville_depart($country){
    foreach($this->ville_model->get_ville_depart($country) as $ville){
        log_message('debug',json_encode($ville));
    }
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($this->ville_model->get_ville_depart($country));
}

到此:

function get_ville_depart($country){
    $countries = $this->ville_model->get_ville_depart($country);
        return $this->output->set_content_type('application/json')
                    ->set_output(json_encode($countries));
}

3 - 在您的视图中,更改此:

var country_id = $('#paysdepart').val();

到此:

var country_id = $(this).val();

注意:您可以直接访问此页面&#34; http:// {mywebsite} / get_ville_depart / {country_id}&#34; {country_id}等于您遇到问题的国家/地区ID,并在使用Ajax查询之前检查一切是否正常。