get和post方式請求數據,jsonp


get方式請求數據:

 
         

   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) {

 
         

console.log(res);

 
         

}, function(err) {

 
         

console.log(err);

 
         

});

 

通過jsonp請求數據,通過動態創建script標簽來訪問服務器,把回調函數名作為參數傳遞給服務器 服務器請求得到數據以后,把數據放回到回調函數中 前端通過回調函數的實現部分,得到數據。

var script = document.createElement("script");

url = url + "&callback=xxx";

script.src = url;

document.documentElement.appendChild(script);

angular的$http服務中,callback參數必須寫成JSON_CALLBACK,意思是告訴angular自己去創建一個回調函數

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服務器代碼:

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進行解析,拿到查詢參數字符串
        var query = url.parse(req.url).query;
        //        console.log(query);
        //把key=value字符串轉變成對象的方式 方便獲取
        var queryObj = qs.parse(query);
        //用來接收數據的變量
        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("服務器啟動成功,監聽3000...");
    });
View Code

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");
        //用來接收數據
        var postData = "";
        //監聽:如果前端有數據發送過來
        req.addListener("data", function(data) {
            postData += data;
        });
        //前端數據傳輸完畢
        req.addListener("end", function() {
            //把接收到的data數據轉換成對象方式
            var postDataObj = JSON.parse(postData);
            var myUrl = postDataObj.myUrl;
            //用來接收網易數據的變量
            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端口正在監聽中...")
    });
View Code

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM