javascript - 在codeigniter中将数据从javascript传递到php文件

标签 javascript php mysql codeigniter

我使用 javascript php 和 mysql 开发了一个事件管理系统。它在纯 php 中完美运行,但现在我需要将其迁移到 codeigniter 中,并需要一些关于如何在 codeigniter 中将数据从 js 传递到 php 的建议。

我的前端java脚本函数是这样的

// event creating
                dp.onTimeRangeSelected = function (args) {
                    var name = prompt("New event name:", "Event");
                    dp.clearSelection();
                    if (!name) return;
                    var e = new DayPilot.Event({
                        start: args.start,
                        end: args.end,
                        id: DayPilot.guid(),
                        resource: args.resource, //Change to classroom name
                        text: name //Change to event name
                    });
                    dp.events.add(e);

                    args.text = name;

                    DayPilot.request(
                        "backend_create.php", 
                        function(req) { // success
                            var response = eval("(" + req.responseText + ")");
                            if (response && response.result) {
                                dp.message("Created: " + response.message);
                            }
                        },
                        args,
                        function(req) {  // error
                            dp.message("Saving failed");
                        }
                    ); 
                };

处理create函数的php文件是这样的

<?php
require_once '_db.php';

$insert = "INSERT INTO events (name, start, end, resource) VALUES (:name, :start, :end, :resource)";

$stmt = $db->prepare($insert);

$stmt->bindParam(':start', $start);
$stmt->bindParam(':end', $end);
$stmt->bindParam(':name', $name);
$stmt->bindParam(':resource', $resource);

$received = json_decode(file_get_contents('php://input'));

$start = $received->start;
$end = $received->end;
$resource = $received->resource;
$name = $received->text;
$stmt->execute();

class Result {}

$response = new Result();
$response->result = 'OK';
$response->message = 'Created with id: '.$db->lastInsertId();

echo json_encode($response);

?>

现在,在迁移到 codeignitor 时,我将 backend_create.php 文件分离到模型和 Controller 中,它看起来像这样。

Controller 部分

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class TimecalCon extends CI_Controller {

    function __construct()
    {
        parent::__construct();
         $this->load->model("Timecal_model");
    }
public function insert()
    {
        $received = json_decode(file_get_contents('php://input'));

        $start = $received->start;
        $end = $received->end;
        $resource = $received->resource;
        $name = $received->text;        
        $this->Timecal_model->InsertDetails($name, $start, $end, $resource);       

    }

模型

<?php   if ( ! defined('BASEPATH')) exit('No direct script access allowed');


class Timecal_model extends CI_Model {

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }
    function InsertDetails($name, $start, $end, $resource)
    {

        $insert = "INSERT INTO events (name, start, end, resource) VALUES (:name, :start, :end, :resource) ";       
        $query = $db->prepare($insert);
        $stmt->bindParam(':start', $start);
        $stmt->bindParam(':end', $end);
        $stmt->bindParam(':name', $name);
        $stmt->bindParam(':resource', $resource);
        $stmt->execute();
        class Result {}
        $response = new Result();
        $response->result = 'OK';
        $response->message = 'Created with id: '.$db->lastInsertId();
        return json_encode($response);
    }

问题是当我更改 View 页面中的 javascript 并像这样使用它时

.....
 DayPilot.request(
                        "TimecalCon/insert", .......

功能中断,我无法将事件插入数据库。在这种情况下我应该如何将数据从js传递到 Controller ?

最佳答案

我们可以使用 Ajax 将值从 javascript 发送到 Controller 。我有一些代码可能会对您有所帮助。

 function deleteEmp(empid){

        var base_url = '<?php echo site_url(); ?>';
        var r=confirm("Do You Really Want to Delete? ")
        if (r==true)
        {
            objPost= new Object();
            objPost.empid   = empid;
            $.ajax({
                url:"employee_registration/deleteEmp?empid="+empid,
                type:"POST",
                data:objPost,
                beforeSend:function(data){
                },
                error:function(data){
                },
                success:function(data){
                    alert(data);
                    result=JSON.parse(data);
                    alert(result);
                    if(result.status == 'success'){
                        alert('Deleted Successfully ');
                        window.location.reload();
                        return false;

                    }

                }

            });
        }else{
            return false;
        }
    }

正如你所看到的,我已经使用ajax将empid从我的 View 传递到 Controller ,这将结果返回到变量中。在本例中是 json。

关于javascript - 在codeigniter中将数据从javascript传递到php文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30365652/

相关文章:

javascript - 我有一个固定的 div,我正在使用 jquery 在滚动时淡出。它工作正常,但如果我半途而废并引用 div 显示的页面

mysql - 对单个查询中的多个 Join 感到困惑,Sqlalchemy

mysql - 按日期连接时查询速度慢(日历表)

mysql - SQL:获取单个表中多行的总和

javascript - jQuery 改变事件顺序

javascript - 如何将 JavaScript 对象连接到单个文件以发送到服务器?

javascript - Sencha 工作室 : configuration of archive server

php - WooCommerce 价格覆盖不起作用

php - 在一个 SQL 查询 (JOIN) 中获取一个普通表并从另一个表计数

php - 如何使用OR语句打印mysql表中满足条件的单元格名称?