2013-12-17 3 views
0

У меня есть этот код для моего кнопочного элементаAJAX пост не работает с помощью JQuery

<script> 
    $(document).on("click","#ajax-button", function() { 
      var dataToSend = "balblabla"; 
        $.post("http://example.com/admin/sitemap/get_categories", dataToSend, function(data) { 
         alert(data); 
       }); 
     }); 
    }); 
</script> 

и этот код в мой контроллер:

public function getcategories() 
{ 
    header('Content-Type: application/x-json; charset=utf-8'); 
    echo(json_encode("test out")); 
} 

Но это не работает на всех, (

Что я делаю неправильно? JQuery загружен раньше. Это не проблема.

+0

'не работает вообще' - описать ЭТО. Сообщения об ошибках? Странное поведение? – reto

+0

любая ошибка в вашей консоли браузера –

+0

json_encode (array ('msg' => "test out")); –

ответ

0

Попробуйте следующее:

Ваш $ .post должен быть $ .getJSON, потому что ярлык $ .post не сообщает jQuery, что он ожидает json в качестве ответа.

$.getJSON('path/to/controller/method', {data: data, to: to, send: send}, function(data) 
{ 
    alert(data); 
}); 

PHP Часть

public function getcategories() 
{ 
    $data = array(); 
    $data['foo'] = 'bar'; 
    //best give json_encode an array as input so you can do data.foo in js part 

    echo json_encode($data); 
} 
0

вы ожидаете JSon данных от простого простого запроса поста, так что не получают данные, пожалуйста, измените запрос на

var dataToSend = {}; 
$.getJSON("http://example.com/admin/sitemap/get_categories", dataToSend, function(data) { 
    alert(data); 
}); 

или же вы можете попробовать это это для лучшего понимания

$.ajax({ 
    url: "page.php", 
    dataType: 'json', 
    data: dataToSend, 
    success: function(data) { 
     alert(data); 
    }, 
    error: function(data) { 
    } 
}); 
0

В дополнение к моим комментариям:

В целом ваш URL должен состоять из path-to-controller/controller (для вызова метода индекса) or path-to-controller/method для вызова некоторого специального метода контроллера.

В этом примере:

  • someController Ваш контроллер
  • SomeMethod является метод someController, что вы звоните

$.post('someController/someMethod', { foo: "bar" // data to send }, function(data){ alert(data); // response });

и контроллер PHP

<?php 
class someController { 
    public function someMethod(){ 
     echo "hello from someMethod"; 
    } 
} 
?> 
Смежные вопросы