2013-04-15 59 views
0

我試圖學會使用阿賈克斯此刻,但不幸的是我不能得到它success阿賈克斯總是會出錯

$('.engineering-services').live('click', function() {  
$.ajax({ 
    url: 'index.php?route=information/information/homepage_info', 
    type: 'post', 
    data: {info_description : 'test'}, 
    dataType: 'json', 
    success: function(json){ 
    alert('pass'); 
    }, 
    error: function(json) { 
    alert('fail'); 
    } 
    }); 

});

這裏是PHP函數...

public function homepage_info() { 
    $json = array(); 
    if (isset($this->request->post['info_description'])) { 
    echo $this->request->post['info_description']; 
    echo '<br /> test2'; 
    } 
    $this->response->setOutput(json_encode($json)); 
    } 

然而,這總是讓一個失敗的警報,而不是通過一個的。 我在這裏錯過了一些明顯的東西嗎?

編輯:它的發現功能正常,在控制檯它給正確的響應,

測試

test2的

謝謝

+0

嘗試完整的網址...像:localhost/yourwebsite/index.php .... – DmitryK

回答

0

您不能將現有查詢字符串與數據組合在一起。像這樣的東西應該工作(或者至少在語法上是有效的):

$.ajax({ 
    url: 'index.php', 
    type: 'post', 
    data: {information:'information/information/homepage_info',info_description:'test'}, 
    dataType: 'json', 
    success:function(json){ 
     alert('pass'); 
    }, 
    error:function(json) { 
     alert('fail'); 
    } 
}); 

而且正如所提到的,什麼是不JSON將可能導致一個錯誤,所以你不echo那些HTML組件......如果有的話,你們print他們。

另外,作爲一個附註,您的dataType應該在服務器端完成,index.php中的header('Content-type: application/json');聲明,而不是在您的jQuery腳本中。它保證以這種方式被識別爲json,並且也少了Javascript代碼。

1

如果您dataType設置爲json,任何返回的不是JSON 導致ajax調用e恐怖。嘗試發送一些json回到腳本... {「test」:「abc」}或類似的。例如,我在您的代碼中看到幾個撥打echo的電話。

不只是這樣,但任何打印到瀏覽器的PHP錯誤/警告/通知都會打斷通話。

提示:您可以使用json_encode()從PHP變量生成有效的JSON。