JQuery AJAX форма не отправляется - PullRequest
0 голосов
/ 14 августа 2011

Почему эти данные не отправляются на мой контроллер?Нет признаков jsonForm в firebug.Нет предупреждения об успешном завершении.

JS

$('form').submit(function() {

  var title = $('#title:input').val();

  alert(title);

  var urlsStr = $("#links").val();
  var urls = urlsStr.match(/\bhttps?:\/\/[^\s]+/gi);
  var formData = {
    "title": title,
    "urls": urls
  }
  var jsonForm = JSON.stringify(formData);                

  $.ajax({
    type: 'GET',
    dataType: 'json',
    cache: false,
    data: { jsonForm: jsonForm },
    url: 'publishlinks/publish',
    success:
      function(response) {
        alert('winrar');
      }
    })
})

Контроллер

function publish() {

  $form = $this->input->get('jsonForm');

  echo json_decode($form);

  $data = array(

  'movieid' => $this->input->post('id')

  );

  $this->load->model('publish_model');
  $this->publish_model->add_record($data);
  $this->load->model('NewsFeed_model');
  $feed['queryMovies'] = $this->NewsFeed_model->getPublications();        
  $this->load->view('news_feed_view', $feed);     

}

Ответы [ 2 ]

1 голос
/ 14 августа 2011

Не забывайте точки с запятой.Они могут быть важны.И dataType в запросе ajax относится к данным, возвращаемым из запроса, а не к данным, отправляемым запросом.

Начните с изменения вашего ajax:

$('form').submit(function(e) {
    e.preventDefault();

    var title = $('#title:input').val();

    alert(title);

    var urlsStr = $("#links").val();
    var urls = urlsStr.match(/\bhttps?:\/\/[^\s]+/gi);
    var formData = {
       title: title,
        urls: urls
    };                

  $.ajax({
    type: 'GET',
    cache: false,
    data: formData,
    url: 'publishlinks/publish',
    success:
      function(response) {
        alert('winrar');
      }
   });
});

Ваши данные будут прикреплены в виде строки запроса, которую ваш контроллер может затем забрать.Из документации :

Параметр данных может содержать либо строку запроса вида key1 = value1 & key2 = value2, либо карту вида {key1: 'value1',ключ2: «значение2»}.Если используется последняя форма, данные перед отправкой преобразуются в строку запроса с помощью jQuery.param ().

Измените контроллер так, чтобы он принимал строку запроса vars.

Вот скрипка: http://jsfiddle.net/jensbits/2F4kN/

0 голосов
/ 14 августа 2011

Разве вы не хотели делать: url: '/publishlinks/publish', с относительным путем?Также вы можете добавить функцию обратного вызова с ошибкой в ​​функцию ajax: http://api.jquery.com/jQuery.ajax/

Также вы должны действительно добавить return false; добавить конец функции $('form').submit(function() {, чтобы форма не передавалась как "нормальная".способ.

или используйте:

$('form').submit(function(e)

e.preventDefault();
e.stopPropagtion();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...