doulian4467 2015-08-20 14:49
浏览 53
已采纳

代码点火器 - 如何使用jQuery将ajax javascript对象提交到数据库

I have a javascript array of data that I want to submit to my codeigniter database:

[
  {
    "name": "title",
    "value": "myTitle"
  },
  {
    "name": "content",
    "value": "myContent."
  }
]

I want to submit this data to codeigniter, and have it update the database. Note that this is not data coming from a form, so I can't just use the typical code igniter form_open() / serialize() method. I am using an ajax post and dynamically building the data:

    var submissionData = [];
    instanceFields.each(function(index){
            var $thisField = $(this);
            var thisData = {};
            thisData.name =$thisField.attr('data-name');
            thisData.value = $thisField.text();
            submissionData.push(thisData);
    });

    var submissionString = {arr: JSON.stringify(submissionData)};
    var submissionURL = baseURL + 'instances/edit';
    $.ajax({
    type: "POST",
    url: submissionURL,
    data: submissionString,
    success: function(data){
        console.log("success:",data);},
    failure: function(errMsg) {
        console.error("error:",errMsg);
    }

Normally, for data posted from a form, I could access it like this in code igniter:

$this->input->post('title')

But if I echo that out here, I get an empty string.

I would then insert the data like this:

$data = array(

            'title' => $this->input->post('title'),
            'content' => $this->input->post('content'),

        );

        return $this->db->insert('extra_instances', $data);

If I decode the JSON and do a var dump, it looks like this:

success: array(5) {
  [0]=>
  object(stdClass)#19 (2) {
    ["name"]=>
    string(5) "title"
    ["value"]=>
    string(21) "myTitle"
  }
  [1]=>
  object(stdClass)#20 (2) {
    ["name"]=>
    string(7) "content"
    ["value"]=>
    string(238) "myContent"
  }
}

How can I modify this to insert into the database?

  • 写回答

1条回答 默认 最新

  • dongqing314511 2015-08-20 17:52
    关注

    If I understand you, you mean that you want to send directly the object to insert into the database so

    Javascript: You send the array into the $_POST key 'insertData'

    var submissionData = [];
    instanceFields.each(function(index){
            var $thisField = $(this);
            var thisData = {};
            thisData.name =$thisField.attr('data-name');
            thisData.value = $thisField.text();
            submissionData.push(thisData);
    });
    
    
    var submissionURL = baseURL + 'instances/edit';
    $.ajax({
        type: "POST",
        url: submissionURL,
        data: {
            insertData : submissionData
        },
        success: function(data){
            console.log("success:",data);
        },
        failure: function(errMsg) {
            console.error("error:",errMsg);
        }
    });
    

    PHP Controller: Receive the post, and you can insert an array directly to do both inserts.

    $data = $this->input->post('insertData');
    return $this->db->insert('extra_instances', $data);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)