通过Ajax向Firebase云端功能发送数据

通过Ajax向Firebase云端功能发送数据

问题描述:

我试图通过后端发送数据或获取firebase云端功能但无法使其工作。通过Ajax向Firebase云端功能发送数据

这里是我的AJAX

 $.ajax({ 
      url: 'https://us-ceXXX1-reXXXts-fXXa-pr.cloudfunctions.net/helloWorld', 
      dataType: "json", 
      method: 'GET', 
      crossDomain: true, 
      body: { 
       mobileNo: "WzkyMzXXXXXXXXXXXc5ODBd" 
      }, 
      success: function(data){ 
       console.log('succes: '+data); 
      } 
      }); 

这里是云功能:

exports.helloWorld = functions.https.onRequest((request, response) => { 
    var responsez = response; 

    console.log("DATA IS:"+request.data); //prints undefined 
    console.log("BODY IS:"+JSON.stringify(request.body)); //prints BODY ID: {} 
    var mobNo = request.body.mobileNo; 
    var options = { 
     body: {mobileNo: mobNo, applicationVersion: "1.0"}, 
     url: 'http://nxxxpi.fixxxa.wxb.pk/GetxxxxxxoUxr', 
     headers: { 
      'appKey':'jDxxxxxxxOr', 
      'appId':'2xxxxx9' 
     }, 
     json: true 
    } 
    cors(request, response,() => {requestz.post(options, function (error, response, body) { 
     console.log('error:', error); // Print the error if one occurred 
     console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received 
     console.log('body:', body); // Print the HTML for the Google homepage. 
     responsez.send(JSON.stringify(body)); 
    })}); 
}); 

和IT控制台日志。

数据为:未定义

体:{}

编辑:这里是火力CONSOLE:

添加后:

console.log("BODY MOBILE:"+JSON.stringify(request.body.mobileNo)); 
console.log("ONLY MOBILE:"+JSON.stringify(request.mobileNo)); 

enter image description here

+1

'方法:“GET”,'不是这应该是POST因为你是在请求体 – Niladri

+2

使用数据传递'数据:{ mobileNo :“WzkyMzXXXXXXXXXXXc5ODBd” }'而不是使用'body' – Niladri

+0

@Niladri,我已经尝试了你的两个建议。不工作:( –

有几个问题在你的代码

  1. 变化的方法POST而不是GET在你的Ajax调用作为要传递的数据请求主体

  2. 使用data属性,而不是在ajax调用中调用body。它现在应该工作。该数据将在request.body的火力函数内部

    $.ajax({ 
         url: 'https://us-ceXXX1-reXXXts-fXXa-pr.cloudfunctions.net/helloWorld', 
         dataType: "json", 
         method: 'POST', 
         crossDomain: true, 
         data: { 
          mobileNo: "WzkyMzXXXXXXXXXXXc5ODBd" 
         }, 
         success: function(data){ 
          console.log('succes: '+data); 
         } 
         }); 
    
+0

谢谢,工作: ) –