通过Ajax将数据发送到Firebase云功能

Nom*_*Ali 2 javascript ajax jquery google-cloud-functions

我试图通过邮件发送数据或获取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);
            }
          });
Run Code Online (Sandbox Code Playgroud)

这是云功能:

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));
    })});
});
Run Code Online (Sandbox Code Playgroud)

它控制台日志.

数据是:未定义

身体是:{}

编辑: 这里是火灾控制台:

添加后:

console.log("BODY MOBILE:"+JSON.stringify(request.body.mobileNo));
console.log("ONLY MOBILE:"+JSON.stringify(request.mobileNo));
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Nil*_*dri 5

您的代码中几乎没有问题

  1. 当您在请求正文中传递数据时,将方法更改为POST而不是GET在您的ajax调用中

  2. 使用该data属性而不是body在ajax调用中.它现在应该工作.数据将request.body在firebase函数内部提供

    $.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);
            }
          });
    
    Run Code Online (Sandbox Code Playgroud)