2015-08-08 4 views
0

Приветствие StackOverflow! Я пытаюсь передать данные контроллеру с помощью AJAX, но по некоторым причинам это не так.AJAX не передает данные контроллеру CodeIgniter

Контроллер:

public function updateSocial($key){ 
     if($key != null){ 
      list($name, $address) = explode("&&", $key); 
      $this->db->query("UPDATE social SET address = '" . $address . "' WHERE name = '" . $name . "'"); 
      echo "Affected rows: " . $this->db->affected_rows(); 
     } 
    } 

Ajax:

function updateSocial(name){ 
       var address = $("#" + name).val(); 
       var key = name +"&&"+ address; 
       //alert(key); 
       $.ajax({ 
        type: "GET", 
        url: "<?php echo base_url(); ?>controller/updatesocial", 
        data: key, 
        dataType: "text", 
        cache:false, 
        success: 
         function(data){ 
          alert(data); //as a debugging message. 
         } 

       }); 
      } 

и HTML:

   <div class="row"> 
        <div class="col-lg-10 col-md-10 col-sm-12 col-xs-12"> 
         <label for="{name}">{name}</label> 
         <input id="{name}" class="form-control" name="{name}"value="{address}"/> 
        </div> 
        <div class="col-lg-2 col-md-2 col-sm-12 col-xs-12"> 
         <div class="clearfix">&nbsp;</div> 
         <input type="submit" class="btn btn-material-green pull-right" onclick="updateSocial('{name}')"/> 
        </div> 
       </div> 

Я искал решения здесь, на StackOverflow, попробовал все и не мог решить ,

Если я вручную ввести значения в URL следующим образом:

www.domain.com/controller/updatesocial/something&&another_something 

это работает, так что проблема не PHP стороны.

Что я пытаюсь сделать: у меня есть несколько полей ввода, которые необходимо изменить индивидуально, и я хочу использовать AJAX для этого.

Прошу прощения, если такая же проблема была опубликована, но я не смог ее найти. Я пробовал все, что мог найти, и это не сработало.

+0

отладки запрос Ajax является то ударяя правильный контроллер & действие, хром, отлаживать, netwok tab, click filename – alamnaryab

+0

Использование AJAX Debugger для Chrome, я получаю XHR Loaded (updatesocial - 200 OK - 65.0000000023283ms - 1.429KB) – dannymitza

+0

У меня есть обновленный ответ –

ответ

2
function updateSocial(name){ 
      var address = $("#" + name).val(); 
      var key = name +"&&"+ address; 
      //alert(key); 
      $.ajax({ 
       type: "GET", 
       url: "<?php echo base_url(); ?>controller/updatesocial/"+key, 
       dataType: "text", 
       cache:false, 
       success: 
        function(data){ 
         alert(data); //as a debugging message. 
        } 

      }); 
     } 

Вы отправляете данные с помощью метода GET, так что вы должны послать его путем добавления URL и ваш контроллер будет

public function updateSocial(){ 
    $key = $this->uri_segment(3); 
    if($key != null){ 
     list($name, $address) = explode("&&", $key); 
     $this->db->query("UPDATE social SET address = '" . $address . "' WHERE name = '" . $name . "'"); 
     echo "Affected rows: " . $this->db->affected_rows(); 
    } 
} 
+0

Спасибо. Он работает еще лучше! – dannymitza

1

Может возникнуть проблема с "& &", попробуйте data: encodeURIComponent(key) в ajax.

+0

Пробовал это, к сожалению, это не реши это. – dannymitza

+0

Как насчет этого 'url:" Controller/updatesocial/"+ encodeURIComponent (key),'? –

+0

С этим я получаю 400 Bad Request – dannymitza

1

Замените эту строку

var key = name +"&&"+ address; 

TO-

var key = name +"-"+ address; 

Также взрываются на сервере с (-), попробуйте

+0

Пробовал в обоих направлениях, тот же результат. – dannymitza

+0

Чтобы узнать код, попробуйте добавить статический путь, Вместо этого на base_url() –

2

Попробуйте это ..

Вы можете отправить данные к серверу по параметрам данных в ajax и типу, который определяет. Тип по умолчанию метод GET

Использование «данные: {имя: имя, адрес: адрес},»

$.ajax({ 
        type: "GET", 
        url: "<?php echo base_url(); ?>controller/updatesocial", 
        data: {name:name,address:address}, 
        dataType: "text", 
        cache:false, 
        success: 
         function(data){ 
          alert(data); //as a debugging message. 
         } 

       }); 
+0

У меня есть обновленный ответ, проверьте его и дайте мне знать –

+0

Это решило проблему! Большое спасибо! – dannymitza

+0

Добро пожаловать ........ –

1

Насколько я знаю, эта проблема у вас «вар ключ», изменить его to: var key = "name =" + name + "&" + "address =" + address;

+0

Я использую CodeIgniter, и он работает, если я вручную введу ожидаемый результат из AJAX, например www.domain.com/controller/updatesocial/something&&another_something, но проблема в том, что AJAX не является почему-то так далеко. – dannymitza

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