2012-06-29 37 views
0

我有這樣的服務器端代碼SLIM:JQuery AJAX調用php SLIM框架調用錯誤函數,沒有錯誤信息?

require 'Slim/Slim.php'; 

$app = new Slim(); 
//$app->config('debug', true); 
$app->get('/hello', 'hello'); 
//$app->post('/addConsultant', 'addConsultant'); 
$app->run(); 

function hello() { 
    echo '{"hello": ' . json_encode("merp") . '}'; 
} 

很簡陋吧?我的意思是它只有一個GET。

現在,我有這樣的客戶端JavaScript代碼:

var rootURL = "http://somabsolutions.se/dev/index.php/"; 

$('#btnHello').click(function() { 
    $.ajax({ 
     type: 'GET', 
     url: rootURL + '/hello', 
     dataType: "text json", 
     success: function(data){ 
      alert("Something " + data); 
     }, 
     error: ajaxFailed 
    }); 

    return false; 
}); 

function ajaxFailed(XMLHttpRequest, textStatus, errorThrown) { 
    alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus  + "\nerrorThrown=" + errorThrown); 
} 

也很容易。

我有這樣的HTML的東西,它可以保持由jQuery的綁定到AJAX調用按鈕:

<!DOCTYPE HTML> 
    <html> 
     <head> 
      <title> 
       Backend test 
      </title> 
     </head> 
     <body> 
      <form id="testForm"> 

       <button id="btnHello">Hello World</button> 

      </form> 
      <script src="javascript/jquery-1.7.2.min.js"></script> 
      <script src="javascript/main.js"></script> 
     </body> 
    </html> 

這東西,用來工作,直到今天,當它爲一些外來原因停止這樣做!

看,它的工作,對不對?

但每次我按下該HTML按鈕,阿賈克斯認爲呼叫失敗和重定向我的誤差函數,從而未能向我提供什麼,但空白的錯誤消息。

這有什麼問題?它幾天前運行得很好!

回答

0

好了,現在我明確地知道什麼是錯的,問題是,我試圖做的REST調用,這是不是從一個不同的URL是目前,我試圖打電話http://something.com/argumenthttp://www.something.com/argument

顯然,這足以讓JavaScript認爲它是一個跨域調用,實際上並非如此。

有在JQuery的一個參數 -

jQuery.support.cors = true; 

即應該允許跨域調用,或者至少是javaScript的認爲是跨域調用,但它確實沒有給我。我只需確保REST調用來自正確的URL。

0

你的問題可能是你的根URL與/結束,你在增加了URL的/hello年初有一次(所以網址root//hello將被要求)或有可能也有問題dataType: "text json"。我總是用dataType: "json"爲我工作。

另外(但它只是一個格式化的東西),你可以使這一行更多的PHP風格:(我知道它是更多的代碼,但我認爲它更容易閱讀,看起來更像PHP ...:D)

回聲 '{ 「你好」:'。 json_encode(「merp」)。 '}';

如果它更改爲:

回波json_encode(陣列( 「你好」=> 「MERP」));

+0

感謝您的回覆。到目前爲止,我已經嘗試了「json」和「text json」。我也嘗試過對網址進行硬編碼。 – Apeforce

+0

你可以嘗試獲取一些調試信息(例如Firebug)嗎? – evotopid

+0

當然,我正在努力在Chrome上找到一個好的URL發送查看器,一旦我確切知道我發送的URL的樣子,我就會回來。 – Apeforce

0

好吧,我想這一定是什麼問題或者是瀏覽器,或服務器,因爲現在它的工作原理... 所以,如果你碰上這個問題,嘗試清除所有Chrome數據。

怪異的地獄。

感謝您的幫助!