2013-12-17 29 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

你是從簡單的簡單的POST請求期待的JSON數據,所以它是沒有得到數據,請改變你的請求

​​

或者你也可以試試這個它更好理解

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

除了我的評論:

一般來說你的網址應該包括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"; 
    } 
} 
?>