2014-03-24 106 views
0

OK [編號],我已搜查了這個問題,並發現它無數的答案,但沒有爲我工作。 我越來越jQuery21006460414978209883_1395689439888被稱爲錯誤。 AJAX調用是正確的,狀態是200和我試圖調用的php url,我已經驗證了它的JSON,它是根據jsonlint的有效json。 我使用jsonp,因爲它是跨域調用。 任何意見都會幫助我調試。 這裏是我的javascript代碼:jQuery的不叫

$.ajax({ 
    crossDomain: true, 
    cache: false, 
    type: "GET", 
    url: "http://example.com/backend.php", 
    data: "fdaf", 
    //async: false, 
    dataType: "jsonp", 
    contentType: 'application/json; charset=utf-8', 
    success: function(msg){ 
     alert("success"+ JSON.stringify(msg)); 
    }, 
    error:function (xhr, ajaxOptions, thrownError){ 
       alert('error function status is : '+xhr.status); 
       alert('error thrown is: '+thrownError); 
    }, 
    jsonp: "callback", 
    complete: function (requestState) { 
     alert("working"); 
    } 
}); 

我backend.php代碼是在這裏:

<?php 
header('Content-Type: application/json'); 

$arr = array('a' => "1", 'b' => "2", 'c' => "3", 'd' => "4"); 
$tr = json_encode($arr); 

echo $_GET['callback'].'['.$tr.']'; 
?> 

請指教一下我做錯了這裏。非常感謝!

+1

你看到的確切錯誤是什麼,你在哪裏看到它? –

+0

@MikeC我收到這個錯誤,馬上進入錯誤功能。拋出的錯誤是:錯誤:jQuery210012445046612992883_1395690899125不叫 –

+0

@adeneo好了,可以請讓我知道我在做什麼錯在這裏。這裏是backend.php的[{「a」的輸出:「1」,「B」: 「2」,「c」:「3」,「d」:「4」}] 謝謝! –

回答

1

你的問題是這樣的,你的PHP的輸出:

callbackfunction[[DATA]] 

這並不調用JavaScript函數。你應該有這樣的輸出:

callbackfunction([DATA]) 

有了這個PHP:

echo $_GET['callback'].'('.$tr.')'; 

因爲$tr是數組則返回[DATA]

您應該只需要JSONP如果你做一個跨域請求。否則,只需使用GET/POST。

+0

你能說清楚嗎?我的代碼中應該改變什麼?這裏是我的php代碼生成的內容:[{「a」:「1」,「b」:「2」,「c」:「3」,「d」:「4」}] –

+0

'[]'在'echo'應'()' – Niels

+0

確定,我改變了..所以我的PHP是生產({ 「A」: 「1」, 「b」: 「2」, 「C」: 「3」,「d」:「4」}),但我仍然得到相同的錯誤jquery [隨機數]沒有被調用,因爲它立即進入錯誤函數。 –