get和post方式請求數(shù)據(jù) jsonp

get方式請求數(shù)據(jù):

 var theurl = "http://c.m.163.com/nc/article/headline/T1348647853363/0-140.html";
 myUrl = encodeURIComponent(theurl);
 url = "http://127.0.0.1:3000?myUrl=" + myUrl;
 $http({
    url: url,
    method: "get"
 }).then(function(res) {
    consoe.log(res);
 }, function(err) {
    console.log(err);
 });

通過jsonp請求數(shù)據(jù),通過動態(tài)創(chuàng)建script標簽來訪問服務器,把回調(diào)函數(shù)名作為參數(shù)傳遞給服務器 服務器請求得到數(shù)據(jù)以后,把數(shù)據(jù)放回到回調(diào)函數(shù)中 前端通過回調(diào)函數(shù)的實現(xiàn)部分,得到數(shù)據(jù)。

var script = document.createElement("script");
url = url + "&callback=xxx";
script.src = url;
document.documentElement.appendChild(script);

angular的$http服務中,callback參數(shù)必須寫成JSON_CALLBACK,意思是告訴angular自己去創(chuàng)建一個回調(diào)函數(shù)

var myUrl = "http://c.m.163.com/nc/article/headline/T1348647853363/0-140.html";
$http({
  method: "jsonp",
  url: "http://localhost:3000?myUrl=" + myUrl + "&callback=JSON_CALLBACK"
})
  .then(function(res) {
      console.log(res);
   },function(err) {
       console.log(err);
   });

$http的post請求

$http({
   method: "post",
   url: "http://localhost:3000",     
     //post請求需要加這個請求頭設置類型
   headers: {
        "Content-Type": "application/x-www-form-urlencoded"
   },
   data: {
         myUrl: "http://c.m.163.com/nc/article/headline/T1348647853363/0-140.html"
   }
  })
  .then(function(res) {
    console.log(res);
   },
   function(err) {
    console.log(err);
   });

promise請求

var promise = $http({
method: "post",
url: "http://localhost:3000",
headers: {
    "Content-Type": "application/x-www-form-urlencoded"
},
data: {
  myUrl: "http://c.m.163.com/nc/article/headline/T1348647853363/0-140.html"}
});

promise.success(function(res) {
console.log(res);
});
promise.error(function(err) {
console.log(err);
});
//或者
promise.then(function(res) {
console.log(res);
}, function(err) {
console.log(err);
})

NodeJS服務器代碼:

  1. get請求對應的服務器代碼:
var http = require("http");
var url = require("url");
var qs = require("querystring");

http.createServer(function(req, res) {
    res.setHeader("Access-Control-Allow-Origin", "*");
    //        console.log(req.url);
    //        對請求對象的url進行解析,拿到查詢參數(shù)字符串
    var query = url.parse(req.url).query;
    //        console.log(query);
    //把key=value字符串轉(zhuǎn)變成對象的方式 方便獲取
    var queryObj = qs.parse(query);
    //用來接收數(shù)據(jù)的變量
    var result = "";
    //        console.log(queryObj.myUrl);
    http.get(queryObj.myUrl, function(request) {
        request.on("data", function(data) {
            result += data;
        });
        request.on("end", function() {
            if(queryObj.callback) {
                var fn = queryObj.callback;
                var resultStr = JSON.stringify(result);
                var str = fn + "(" + resultStr + ")";
                res.end(str);
            } else
                res.end(result);
        });
    }).on("error", function(err) {
        res.end(err);
    })
    //        res.end("hello sb");
})
.listen(3000, function() {
    console.log("服務器啟動成功,監(jiān)聽3000...");
});

2.post請求對應的服務器代碼:

var http = require("http");
var url = require("url");
var qs = require("querystring");

http.createServer(function(req, res) {
     res.setHeader("Access-Control-Allow-Origin", "*");
    //設置編碼格式
    req.setEncoding("utf8");
    //用來接收數(shù)據(jù)
    var postData = "";
    //監(jiān)聽:如果前端有數(shù)據(jù)發(fā)送過來
    req.addListener("data", function(data) {
        postData += data;
    });
    //前端數(shù)據(jù)傳輸完畢
    req.addListener("end", function() {
        //把接收到的data數(shù)據(jù)轉(zhuǎn)換成對象方式
        var postDataObj = JSON.parse(postData);
        var myUrl = postDataObj.myUrl;
        //用來接收網(wǎng)易數(shù)據(jù)的變量
        var resultData = "";
        http.get(myUrl, function(request) {
            request.on("data", function(data) {
                resultData += data;
            });
            request.on("end", function() {
                res.end(resultData);
            })
        }).on("error", function(err) {
            console.log(err);
        });
    });
})
.listen(3000, function() {
    console.log("3000端口正在監(jiān)聽中...")
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,117評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,860評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,128評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,291評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,025評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,421評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,477評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,642評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,177評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,970評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,157評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,717評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,410評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,821評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,053評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,896評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,157評論 2 375

推薦閱讀更多精彩內(nèi)容