数据没有从ajax传递到控制器

问题描述

我正在尝试进行谷歌身份验证。在 add.PHP(templates file) 我写了这个 javascript 代码

function singIn() {//<------this is called when button is pressed

firebase.auth()
            .signInWithPopup(provider)
            .then((result) => {
                console.log(result);
                var credential = result.credential;

                // This gives you a Google Access Token. You can use it to access the Google Api.
                var token = credential.accesstoken;

                // The signed-in user info.
                var user = result.user;

                var userInfo = JSON.stringify(user); //to Post
$.ajax({
method: “POST”,url: “<?= Router::url(array('controller' => 'Users','action' => 'googlesignin')); ?>”,data: {
userInfo
},success: function(data) {
console.log(“Signed in google!”);
},error: function(param) {
                    console.log("Something went wrong" + param.responseText.message);
                    console.log("-----------------------");
                    console.log(param);
                }
            });

我收到了 google pop,一切正常,没有任何错误,但数据没有传递到控制器。我的控制器

public function googlesignin(){

    echo $_POST['data']['email'];
    die;
}

我也加了这个

$builder->connect(’/’,array(‘controller’ => ‘Users’,‘action’ => ‘googlesignin’));

在 routes.PHP 中。

谁能告诉我问题出在哪里?

解决方法

在阿贾克斯

$.ajax({
  // ...
  headers: {
    "Accept":"application/json"
  }
  //...

在你的控制器中

public function googlesignin(){

   $post = $this->request->getData(); // All post data available here
   // pr($post); // print all data
   echo $post['data']['email'];
   die;
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...