diff --git a/app/assets/javascripts/issues.js.coffee b/app/assets/javascripts/issues.js.coffee
index 67d9498c50a6a7f4938599ffd7116363bbae98b2..c273ddbd39147b0ab9aaf916d91fce01428b9303 100644
--- a/app/assets/javascripts/issues.js.coffee
+++ b/app/assets/javascripts/issues.js.coffee
@@ -22,7 +22,7 @@
           backgroundColor: '#DDD'
           opacity: .4
       )
-  
+
   reload: ->
     Issues.initSelects()
     Issues.initChecks()
@@ -54,7 +54,16 @@
       unless terms is last_terms
         last_terms = terms
         if terms.length >= 2 or terms.length is 0
-          form.submit()
+          $.ajax
+            type: "GET"
+            url: location.href
+            data: "issue_search=" + terms
+            complete: ->
+              $(".loading").hide()
+            success: (data) ->
+              $('.issues-holder').html(data.html)
+              Issues.reload()
+            dataType: "json"
 
   checkChanged: ->
     checked_issues = $(".selected_issue:checked")
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 94ce8e0616ced9e8ed2a9d1dd1c583abf0194b33..a83d6dfed8dfe016c9488851661c076cd2cdf58e 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -188,4 +188,12 @@ class ApplicationController < ActionController::Base
       count: count
     }
   end
+
+  def view_to_html_string(partial)
+    render_to_string(
+      partial,
+      layout: false,
+      formats: [:html]
+    )
+  end
 end
diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb
index e03d54cddc170319e6cae7231ed3b79068977ddf..5dcdba5d38841a8f508658590e365e333f2f0075 100644
--- a/app/controllers/projects/issues_controller.rb
+++ b/app/controllers/projects/issues_controller.rb
@@ -11,7 +11,7 @@ class Projects::IssuesController < Projects::ApplicationController
   # Allow modify issue
   before_filter :authorize_modify_issue!, only: [:edit, :update]
 
-  respond_to :js, :html
+  respond_to :html
 
   def index
     terms = params['issue_search']
@@ -28,9 +28,13 @@ class Projects::IssuesController < Projects::ApplicationController
 
 
     respond_to do |format|
-      format.html # index.html.erb
-      format.js
+      format.html
       format.atom { render layout: false }
+      format.json do
+        render json: {
+          html: view_to_html_string("projects/issues/_issues")
+        }
+      end
     end
   end
 
@@ -48,10 +52,7 @@ class Projects::IssuesController < Projects::ApplicationController
     @target_type = :issue
     @target_id = @issue.id
 
-    respond_to do |format|
-      format.html
-      format.js
-    end
+    respond_with(@issue)
   end
 
   def create
diff --git a/app/controllers/projects/notes_controller.rb b/app/controllers/projects/notes_controller.rb
index dc479a9c755d5e88062880d51fe67dc338266485..2738a99459de4c83b07ce7d6f70c563d09b4681c 100644
--- a/app/controllers/projects/notes_controller.rb
+++ b/app/controllers/projects/notes_controller.rb
@@ -17,14 +17,8 @@ class Projects::NotesController < Projects::ApplicationController
     respond_to do |format|
       format.html { redirect_to :back }
       format.json do
-        html = render_to_string(
-          "projects/notes/_notes",
-          layout: false,
-          formats: [:html]
-        )
-
         render json: {
-          html: html,
+          html: view_to_html_string("projects/notes/_notes")
         }
       end
     end
diff --git a/app/views/projects/issues/_head.html.haml b/app/views/projects/issues/_head.html.haml
index 8ae9ba57d2a3f927e36eaee42deb27d5699519fd..a44db78a92b4f4f40cb66cd7922d754a62c91452 100644
--- a/app/views/projects/issues/_head.html.haml
+++ b/app/views/projects/issues/_head.html.haml
@@ -21,9 +21,5 @@
           = link_to new_project_issue_path(@project, issue: { assignee_id: params[:assignee_id], milestone_id: params[:milestone_id]}), class: "btn btn-new pull-right", title: "New Issue", id: "new_issue_link" do
             %i.icon-plus
             New Issue
-        = form_tag project_issues_path(@project), method: :get, remote: true, id: "issue_search_form", class: 'pull-right issue-search-form'  do
-          = hidden_field_tag :status, params[:status], id: 'search_status'
-          = hidden_field_tag :assignee_id, params[:assignee_id], id: 'search_assignee_id'
-          = hidden_field_tag :milestone_id, params[:milestone_id], id: 'search_milestone_id'
-          = hidden_field_tag :label_name, params[:label_name], id: 'search_label_name'
+        = form_tag project_issues_path(@project), method: :get, id: "issue_search_form", class: 'pull-right issue-search-form'  do
           = search_field_tag :issue_search, nil, { placeholder: 'Filter by title or description', class: 'input-xpadding issue_search input-xlarge append-right-10 search-text-input' }
diff --git a/app/views/projects/issues/index.js.haml b/app/views/projects/issues/index.js.haml
deleted file mode 100644
index 1be6a64f535792057aefc30822dede6475e053ce..0000000000000000000000000000000000000000
--- a/app/views/projects/issues/index.js.haml
+++ /dev/null
@@ -1,4 +0,0 @@
-:plain
-  $('.issues-holder').html("#{escape_javascript(render('issues'))}");
-  History.replaceState({path: "#{request.url}"}, document.title, "#{request.url}");
-  Issues.reload();