如何通过xhr进行动态SQL插入?

时间:2013-10-18 17:03:11

标签: php jquery codeigniter postgresql xmlhttprequest

我正在将数据库加载到表中,我的想法是动态启用动态编辑,就像在phpMyAdmin中一样。这并不难。从前端到底,至少。为记录创建删除功能也很容易,但我不知道如何进行动态插入。特别是,如何表达一个查询,该查询将从新编辑的表行中访问值,这将是一个新记录。

至于删除我使用的记录:

var xhr;
xhr=new XMLHttpRequest();

xhr.onreadystatechange=function()
{
  if (xhr.readyState==4 && xhr.status==200)
  {
    document.getElementById("output").innerHTML=xhr.responseText;
  }
}

$.fn.delClick = function() {

  var table = $(this).parent().parent().parent();
  var row = $(this).parent()

  if(confirm("Are you sure?"))
  {

    var tableName = table.find('.add').data('tablename');
    var idName = table.find('.add').data('idname');
    var rowId = row.children('td.id').html();

    xhr.open("POST","scripts/delete?tableName="+tableName+"&idName="+idName+"&rowId="+rowId,true);
    xhr.send(); 

    row.remove();


  }
}

scripts/delete.php

$this->ci =& get_instance(); 

$remove = $this->ci->db->query("DELETE FROM ".$_GET['tableName']." WHERE ".$_GET['idName']." = '".$_GET['rowId']."'");

我希望在插入记录方面做类似的事情,但我被卡住了 插入记录的主要问题是我无法通过POST传递变量,因为每个表的列数不同,因此我需要传递给scripts/insert.php的变量数量也会变化。或者也许有办法?

1 个答案:

答案 0 :(得分:1)

使用对象

var inputs = {};
$('.formInput').each(function(){

    var id = $(this).attr('id');
    var val = $(this).val();
    inputs[id] = val ;
});

$.post( insert_url , {inputs:inputs});

你也可以分析一些比较简单的crud系统,比如

https://github.com/maxxxir/mz-codeigniter-crud