2010-01-09 2 views
2

Я пытаюсь опубликовать вызов Ajax, как если бы это были следующие элемент формы:

<input type="text" name="data[BlogPost][title]" /> 

Но я не имею никакой удачи здесь мой источник:

$.ajax({ 
     url: "/add/", 
     type: "POST", 
     data: (/* what do I do here */), 
     success: function(msg){ 
      alert(msg); 
     } 
    }); 

Я попытался вложенные объекты, но который генерирует только ответ сервера, как: массива 'данные' => строка '[объект Object]' (длина = 15)

Что никому не помогает!

Любые мысли?

ответ

7

Просто поместите имя поля в кавычках, также заметить, я использую литерал объект для параметра данных {} против тех скобок вы имели в своем вопросе:

$.ajax({ 
    url: "/add/", 
    type: "POST", 
    data: { 'data[BlogPost][title]':'My New Title'} , 
    success: function(msg){ 
     alert(msg); 
    } 
}); 
+0

Просто интересно, это работает? 'data: {'data [BlogPost] [title]': $ (" input [name = 'data [BlogPost] [title]'] "). val()'} ,? –

+0

Вам, вероятно, потребуется избежать символов '[]' в селекторе jQuery: http://docs.jquery.com/Selectors. В самом конце списка показано, что нужно экранировать. Это больше связано с селекторами jQuery и CSS, чем с действительными именами W3C. –

+0

@ Doug: спасибо за полезную проницательность! –

0

Вы пробовали serialize()?

$.ajax({ 
    url: "/add/", 
    type: "POST", 
    data: $('#myForm').serialize(), 
    success: function(msg){ 
     alert(msg); 
    } 
}); 

Я не уверен на 100%, что он работает на многомерных массивах, но это того стоит.

+0

Это будет работать в некоторые контексты, но на самом деле у меня нет формы для захвата данных из – SeanDowney

+0

SERIALIZE? Ты шутишь, что ли? ДЕЙСТВИТЕЛЬНО? freakin слово, которое спасло меня уже потраченные ЧАСЫ на массивах, ... и других дерьмах, которые я пробовал и пришел, чтобы узнать, что это только ОДИН СЛОВО, называемый SERIALIZE? или больше от слова $ ('# myForm'). serialize() WOW. Я использую ASP.NET 4.0 Beta 2 w/MVC 2 Preview 2 framework, DataAnnotations, клиентские Jquery Validations, jQuery AJAX, плагин «Уведомлять» jQuery и несколько других, просто для сброса пароля для страницы. Мне нравится MVC 2 ... –

0

Мои догадки, [..] Квадратные скобки являются недопустимыми символами для имен элементов ввода?

Исправьте меня, если я ошибаюсь.

Обновление: Ой, хорошо, поэтому я ошибаюсь. Все равно оставит это здесь как «обучающую» информацию. Для других, как я :)

+0

На самом деле, как Rails, так и PHP обрабатывают массивы и многомерные массивы. –

+1

Они действительны, используются для обозначения массивов. –

+0

Спасибо за отказ от голосования, кто бы это ни был :) –