如何从 JavaScript 获取数据到控制器并将其存储在数据库中

Posted

技术标签:

【中文标题】如何从 JavaScript 获取数据到控制器并将其存储在数据库中【英文标题】:How to get data from a JavaScript to controller and store it in the database 【发布时间】:2020-01-25 16:51:38 【问题描述】:

我想从这个 javascript 获取位置到控制器并将其存储在数据库中:

var currPosition;

navigator.geolocation.getCurrentPosition(function(position) 
  updatePosition(position);
  setInterval(function() 
    var lat = currPosition.coords.latitude;
    var lng = currPosition.coords.longitude;
    jQuery.ajax(
      type: "POST",
      url: "myURL/location.php",
      data: 'x=' + lat + '&y=' + lng,
      cache: false
    );
  , 1000);
, errorCallback);

var watchID = navigator.geolocation.watchPosition(function(position) 
  updatePosition(position);
);

function updatePosition(position) 
  currPosition = position;


function errorCallback(error) 
  var msg = "Can't get your location. Error = ";
  if (error.code == 1)
    msg += "PERMISSION_DENIED";
  else if (error.code == 2)
    msg += "POSITION_UNAVAILABLE";
  else if (error.code == 3)
    msg += "TIMEOUT";
  msg += ", msg = " + error.message;
  alert(msg);

【问题讨论】:

您遇到任何错误?你的问题是什么? 我是 codeigniter 框架的新手,请告诉我如何将这些观察位置坐标从 java 脚本发布到控制器 【参考方案1】:

.ajax()发帖:

// ....
let formData = new FormData();
const lat = currPosition.coords.latitude;
const lng = currPosition.coords.longitude;
formData.append("x", lat);
formData.append("y", y lng;
$.ajax(
    url: "myURL/location.php", // update this with you url
    dataType: 'text',
    cache: false,
    contentType: false,
    processData: false,
    data: formData,
    type: 'POST',
    success: function(data)
        const response = jQuery.parseJSON(data);
    
);
//....

接收codeigniter中的post数据:

$x = $this->input->post('x');
$y = $this->input->post('y');

【讨论】:

我仍然得到空值 "INSERT INTO location (x, y) VALUES (NULL, NULL)" Uncaught ReferenceError: base_url is not defined @KishanChandra 可能是你没有声明类扩展CI_Controller.. 看这个案例:***.com/questions/53944667/… 嗨,谢谢我设法通过添加 来解决它【参考方案2】:

您只需将 uri 参数更改为您拥有的 codeginter 路由

setInterval(function()
    ....
    url:  "change this to codeigniter route url", 
    ....
, 1000);

然后在控制器中你只需要保存这些参数,

class X extends CI_Controller

    function update_position()
        $x = $this->input->post('x');
        $y = $this->input->post('y');

        // then save it using model or query.
        $this->model_name->insert([...])
    

【讨论】:

我仍然得到空值" INSERT INTO location (x, y) VALUES (NULL, NULL)" Uncaught ReferenceError: base_url is not defined

以上是关于如何从 JavaScript 获取数据到控制器并将其存储在数据库中的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据库中的数据提取到 javascript 文件中并将其存储在数组中?

我如何从多个标签中获取多个数据,并将它们作为 json 存储在 javascript、jquery 中

将数据从 javascript 发送到 html 并使用 php 获取

JavaScript:如何从 URL 获取函数的数据? [复制]

如何从 Javascript 调用 PHP 文件并将数据从 PHP 返回到 Javascript

如何获取变量作为从控制器到 JavaScript 的响应?