簡體   English   中英

JSONP-Ajax請求回調失敗

[英]JSONP - ajax request callback fails

我正在使用jsonp將一些數據從一個域推送到另一個域。 我在第二台服務器上獲取數據,該過程運行正常。 但是回調無法正常工作,即使在其他服務器上獲取數據后,該請求仍顯示pending狀態,並且一段時間后該請求將失敗,並出現錯誤net::ERR_EMPTY_RESPONSE

$.ajax({
    type: 'GET',
    url: url,
    crossDomain: true,
    data: data,
    dataType: 'jsonp',
    success: function(responseData, textStatus, jqXHR) {
      console.log('success')
    },
    error: function(xhr,status,error){
      console.log('error')
    }
});

當請求失敗時,我在控制台中收到“錯誤”。

更新

標頭

Request URL:http://example.com:3000/request?callback=jQuery21309164826604537666_1429167109185&firstname=sdf&lastname=sdf&_=1429167109187
Request Headers
Provisional headers are shown
Accept:*/*
Referer:http://localhost/widgets/form.html
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36
Query String Parameters
view source
view URL encoded
callback:jQuery21309164826604537666_1429167109185
firstname:sdf
lastname:sdf
phone:sdf
email:sdf
_:1429167109187

我認為您的問題是帶有jsonp的jQuery期望返回一些JSON。 然后,您的響應主體應該看起來像

jQuery21309164826604537666_1429167109185({});

在PHP中,您可以簡單地返回一個偽函數,如下所示:

$callback = isset($_GET["callback"]) ? $_GET["callback"] : "?";
header('Access-Control-Allow-Origin: *');
header("Content-type: application/json");
echo $callback . "({});";

對於Node.js,您可以使用

res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader("Content-Type", "application/json"); 
res.jsonp({});

參考: ExpressJS JSONP

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM