2011-06-02 219 views
3

更新1:jsonpCallback功能不能正常工作

我剛從的jQuery 1.4.4升級到1.6.1。這在原始問題中如何影響腳本?

原題:

正如我測試,我所做的:

$(document).ready(function() { 
    get_jsonp_feed(); 

    function get_jsonp_feed() { 
     $.ajax({ 
      url: 'http://www.remote_host.co.uk/feed.php', 
      type: 'GET', 
      dataType: 'jsonp', 
      jsonp: 'callback', 
      jsonpCallback: 'jsonpCallback', 
      error: function(xhr, status, error) { 
       alert("error"); 
      }, 
      success: function(jsonp) { 
       alert("success"); 
      } 
     }); 
    } 

    function jsonpCallback(data){ 
     alert("jsonpCallback"); 
    } 
}); 

我期待得到2級警報,第一個顯示success和第二顯示jsonpCallback。但我只收到第一個警報success。爲什麼第二次警報沒有顯示?

回答

3

喬治是正確的,設置JSONP參數去假 - 在jQuery 1.5的(所以,你如何設置這是jQuery的版本而定)。我不相信你提供的回調名稱是作爲一個函數被調用的(相反,它是提供給服務器的URL中提供的名稱)。如果您獲得成功,那麼您已收到數據。好奇:你有沒有爲dev設置主機條目,因爲我試圖做一些測試,並且http://www.remote_host.co.uk/feed.php不能解決我的問題。

+0

回調將自動添加到網址afaik。 – oshirowanen 2011-06-02 14:06:46

+0

我正在使用jquery 1.4.4。 – oshirowanen 2011-06-02 14:13:59

+0

請參閱更新1.此外,remote_host已完成隱藏我的網站/公司名稱。 – oshirowanen 2011-06-02 14:26:30

0

我認爲你需要的jsonpCallBack:'jsonpCallback'位更改爲jsonpCallBack: function() { alert('boo'); }

+0

從jQuery 1.5開始,可以提供一個函數作爲$ .ajax方法的jsonpCallback參數。該函數在接收到XHR請求的響應時,但在執行請求之前不會被調用,並且必須返回一個字符串(將用於URL中的回調參數)。 – Zhami 2011-06-02 14:13:11

+0

請參閱更新1. – oshirowanen 2011-06-02 14:27:09

-1

要我所有的朋友誰正與PHP的問題+ JQuery的+ JSONP

這裏有雲,我使用PHP 5.3和jQuery 1.10

$('#button_submit2').click(function() { 
    prevent_caching = (new Date()).getTime(); 
    $.ajax({ 
     type: 'GET' 
     , url: "http://yoururl.com/webservice.php" 
     , dataType: 'jsonp'  //Besides plain xml, the dataType can be html, json, jsonp, script, or text. 
     , jsonp: 'callback'  //this will be added in the query as parameter 
     , jsonpCallback: 'jsonp_reply' //this is what ajax call is expecting json to be encapsulated ine i.e. json_reply(JSON_RESPONSE) 
     , data: { 
      uniq_val: prevent_caching 
      , method_name: "get_all_tasks" 
      , format: 'jsonp' 
     } 
     , cache: false 
     , async: false 
    }) 
    .success(function (rsp) { 
     console.log('success'+rsp); 
    }) 
    .fail(function (xhr, error, thrownError) { 
     console.log('fail status:[' + xhr.status + '] error:[' + thrownError + ']'); 
    }) 
    .always(function() { 
     console.log('complete'); 
    }); 
}); 
+0

爲什麼被拒絕?嚴重的是,SO應該在沒有解釋的情況下阻止投票!對此有何幫助? – 2016-04-10 12:24:54