Jquery AJAX responseText返回undefined

时间:2015-01-31 10:20:55

标签: jquery ajax codeigniter

我试图使用ajax将图像上传到服务器并且它有效,现在问题是从AJAX返回数据,它继续使用responText提供undefined。

$('#imageform').submit(function(e){

var formData = new FormData(this);
  var request = $.ajax({
    url: "<? echo site_url('mybazaar/uploadProductImage'); ?>",
    type: "POST",
    data: formData,
    contentType: false,
    processData: false,
    success: function (res) {
      var newImage = $(res).filter('‪#ajaximage').html();
      $('#ajax_product_image').append(newImage);
      alert(res.responseText);
    },
    error: function (request, status, error){
      alert(error);
    }
    }).done(function(){

    });
 e.preventDefault();
});

PHP文件:

 public function uploadProductImage(){
    $config['upload_path']          = './images/product_images/';
    $config['allowed_types']        = 'gif|jpg|png';
    $config['max_size']             = 10024;
    $config['max_width']            = 10240;
    $config['max_height']           = 10240;

    $upload_path = 'images/product_images/';

    $this->load->library('upload', $config);

    if (!$this->upload->do_upload("product_image_primary")){
        return false;
    }
    else{
        $data = array('upload_data' => $this->upload->data());
        $this->resize($data['upload_data']['full_path']);
        echo "<div id='ajaximage'><div class='col-md-2'><img src='".base_url().$upload_path.$data['upload_data']['file_name']."'></div></div>";
    }
}

但是,如果我只做#34; alert(res)&#34;,整个页面的HTML都会收到警报,包括我在&#34; mybazaar / uploadProductImage&#34;中回应的文字。< / p>

我顺便使用Jquery 1.9和CodeIgniter。

1 个答案:

答案 0 :(得分:1)

success回调的第一个参数是以content-type标头指定的格式从服务器返回的实际数据,默认情况下为html,在您的情况下也是如此。现在您正在获取html,您不必使用filter('‪#ajaximage')搜索div 因为这正是你在res中所拥有的(div#ajaximage),所以你可以直接将它附加到你的DOM中。

    success: function (res) {
      $('#ajax_product_image').append(res);
    }

我删除了alert(res.responseText),因为responseText不是成功回调的data参数中定义的属性,它是用于触发Ajax调用的实际XMLHttpRequest对象的属性。如果仍然需要访问responseText,则成功回调有3个参数function(data, status, jqXHR). jqXHR(3rd argument basically, you can change the name if you like) will have all the underlying properties of original XMLHttpRequest` object