2017-06-06 26 views
0

我試圖從服務器端發送一個從express js到api的請求。npm request.post每次都給出錯誤,但是這個帖子與JQuery一起工作

這裏是它

request.post({ 
       url: $url, 
       crossDomain: true, 
       data: {id : '392', sid: 'abc'} 
       }, function(error, response, body){ 
        console.log(response.statusCode); 
        console.log(body); 
      }); 

代碼這總是與響應的StatusCode 500返回;

另一方面,我嘗試從服務器端使用JQuery的相同的發佈請求。

這是它的代碼。

$.ajax({ 
    url: $url, 
    crossDomain:true, 
    data: { 
     id : $id, 
     sid: $sid 
    }, 
    type: "POST", 
    // dataType: "json", 

    //on success 
    success: function(response){ 
     //do something after something is received data 
    }, 
    //on error 
    error: function(jqXHR, exception){ 
     //bad request 
     console.log(jqXHR.status); 
     console.log(exception); 
    } 
}); 

$ url和所有其他變量在兩種情況下都是相同的。儘管如此,我得到了適當的響應和狀態代碼200,而不像我使用npm請求模塊所做的那樣。

我哪裏錯了?

+0

我認爲調用post請求的格式是'request.post('http://service.com/api',{form:{key:'value'}})'根據https:/ /www.npmjs.com/package/request –

回答

1

那麼這個代碼呢?

我也似乎無法找到的「跨域」選項的任何引用在request.js文檔

var request = require('request'); 
request.post(
    { 
     headers: {'content-type':'application/json'}, 
     url: $url, 
     form: {id : '392', sid: 'abc'} 
    }, 
    function(error, response, body){ 
     console.log(response.statusCode); 
     console.log(body) 
    } 
); 
0

request$.ajax不具有相同的options被調用時。您可以使用傳遞的選項對象中的body屬性發送請求正文。此外,還有方便的布爾型jsonContent-Type:application/json標頭添加到請求中,將請求主體序列化爲JSON並自動將響應主體解析爲JSON。

const request = require('request') 

request({ 
    url: $url, 
    method: 'POST', 
    body: {id: '392', sid: 'abc'}, 
    json: true 
}, (err, res, body) => { 
    if (err) { 
    // handle error 
    console.log(err) 
    return 
    } 

    // handle response 
    console.log(response)  
}) 
相關問題