使用php将select2数据和日期格式添加到数据库

时间:2014-03-18 17:06:00

标签: javascript php jquery ajax input

我想将一些select2(jquery插件)输入数据添加到数据库中...所以首先我有html和html很好:

<!-- Text input-->
<div class="form-group">
  <label class="col-md-4 control-label" for="vrsta">Vrsta aktivnosti</label>  
  <div class="col-md-4">
    <input type="hidden" id="vrsta_rada" class="form-control select2-container select2-container-multi"/>
  </div>
</div>

我将select2数据转换为字符串:

var data1 = $("#vrsta_rada").select2("data");

$.each(data1, function(key, value) {
  var vrsta_rada = data[key].text
});

我尝试使用ajax / jquery / php

将此变量vrsta添加到数据库
ajax:
$.ajax({
            url: "insertAkt.php",
            type: "POST",
            async: true, 
            data: { vrsta_rada:vrsta_rada}, 
            dataType: "html",

            success: function(data) {
                $('#output').html(data);
                $('#myModal').modal('hide');
                drawVisualization();   
            },  
        });

和php:

  try {        
                    $DBH = new PDO($dsn, $user, $pass, $opt);
                    $STH = $DBH->prepare("INSERT INTO aktivnosti (vrsta) VALUES (:1)");

                    $STH->bindParam(':1', $_POST['vrsta_rada']);





                    $STH->execute();

                } catch (PDOException $e) {
                    echo $e->getMessage();
                }
                echo "<p>Data submitted successfully</p>";

            }
在浏览器控制台中

我收到错误:

Uncaught InvalidStateError: Failed to read the 'selectionDirection' property from 'HTMLInputElement': The input element's type ('hidden') does not support selection. jquery-latest.js:7546

gn jquery-latest.js:7546
x.param jquery-latest.js:7519
x.extend.ajax jquery-latest.js:8021
(anonymous function) zadaci.html:341
x.event.dispatch jquery-latest.js:5095
v.handle

3 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题。在我找到原因之前需要进行一些挖掘,所以希望这可以节省其他时间。添加此功能:

function get_type(thing){
    if(thing===null)return "[object Null]"; // special case
    return Object.prototype.toString.call(thing);
}

然后,就在ajax帖子之前插入这个:

alert(get_type(vrsta_rada));

我的猜测是它会说“[object HTMLInputElement]”。为什么会这样?这是因为变量超出了ajax调用的范围(var声明在另一个函数内),然后变量的全局解析从dom树中找到具有相同id的输入元素。

答案 1 :(得分:1)

我今天遇到了这个问题,错误就是我把变量注释掉了。

我需要将元素的值传递给我的Ajax POST函数,如下所示:

var value = $('#element').val();
// var tid= $('#id').val();

$.ajax({
type: 'POST',
url: 'myurl,
data: {value: value, tid: tid},
})

然而,因为我的变量声明&#34; tid&#34;被注释掉了我收到的错误是隐藏的类型无法选择。

简单

答案 2 :(得分:-1)

我也有类似的问题,后来我发现我没有检索HTML元素的值,然后作为参数值传递给ajax调用。

所以我按照你的例子进行了如下操作:

var data1 = $("#vrsta_rada").select2("data");

这里data1将拥有完整的HTML元素树而不是单独的值,所以当它作为参数传入ajax1调用时,ajax引擎将尝试从Hidden元素中检索值因各种原因不允许这样做。

所以我更新如下

var data1 = $("#vrsta_rada").select2("data").val();

现在工作正常。