2011-01-30 2 views
1

Я использую Rails 3 с JQuery.

У меня есть две переменные, которые я хочу отправить из своего кода javascript в контроллер и визуализировать свои представления так, чтобы они имели новые значения переменных.

Мой запрос в JavaScript выглядит следующим образом:

function sendGPToServer(title, address) 14  { 
     var dataString = 'name=' + title + '&address=' + address; 
     $.ajax({ 
      type: "GET", 
      url: "/search", 
      data: dataString, 
      success: function() { 
       alert("succeeded!"); 
      } 
     }); 

В контроллере страниц (где живет розыскное мероприятие) У меня есть

protect_from_forgery :except => [:search] 

поэтому оно не должно быть проблемой безопасности.

Я получаю «преуспел!». сообщение, но поиск не вызывается. Но если I перезагрузить на главной странице вручную, значения переменных будут заполнены на моей странице веб-сайта, как я хотел.

Кто-нибудь знает, почему это может произойти? Может быть, потому, что мой javascript включен в заголовок моего html-макета?

(также: в routes.rb я изменил страниц/поиск для поиска поэтому оно не должно быть проблемой)

Спасибо

+0

Try добавив обработчик error(), чтобы вы могли видеть, является ли это 404ing/500ing – jamiew

ответ

0

Почему вы ожидаете, что ваш переменные получить назначение если вы ничего не делаете внутри функции обратного вызова sucess?

Если у вас выполнена функция успеха, это значит, что вызов метода, отвечающего на этот URL (с запросами GET), был вызван, и он ответил в ответ на вопрос (возможно, также просто HTTP-код empy).

Если бы я был у вас, я бы взглянуть на то, что ваш контроллер метод возвращает и о том, как использовать его в ситуации, вам нужно (фи возвращающегося JSON и использовать его как-нибудь/сделать некоторые Js ...)

+0

. Дело в том, что когда я получаю значения переменных, я использую методы для установки значения переменных. Затем всякий раз, когда моя страница отображается снова, сами видят, что значения изменились и записывают разные значения на страницах. Я думаю, что нет смысла пытаться отобразить что-то из контроллера, если действие контроллера не получило вызова в любом случае. – Adas

+0

Если функция успеха ajax называется, это означает, что «кто-то» отправил ответ на этот запрос. Посмотрите лучше и будьте уверены в том, кто отвечает (firebug может помочь здесь, так как вы можете увидеть контент ответа). Также могут использоваться маршруты рейка или assert_generates (см. Http://guides.rubyonrails.org/routing.html#inspecting-and-testing-routes), чтобы проверить, настроен ли маршрут. –

Смежные вопросы