【问题标题】:Add select2 data and date format to database with php使用 php 将 select2 数据和日期格式添加到数据库
【发布时间】:2014-03-18 17:06:00
【问题描述】:

我想将一些 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

【问题讨论】:

  • 这里有什么问题?
  • 是不是像格式不正确的 json 一样简单。尝试`数据:{“vrsta_rada”:vrsta_rada},'

标签: javascript php jquery ajax input


【解决方案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 的输入元素。

【讨论】:

    【解决方案2】:

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

    我需要获取一个元素的值以传递给我的 Ajax POST 函数,如下所示:

    var value = $('#element').val();
    // var tid= $('#id').val();
    
    $.ajax({
    type: 'POST',
    url: 'myurl,
    data: {value: value, tid: tid},
    })
    

    但是,由于我的“tid”变量声明被注释掉了,我收到了无法选择隐藏类型的错误。

    简单

    【讨论】:

      【解决方案3】:

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

      所以我按照你的例子做了如下:

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

      这里data1 将拥有完整的 HTML 元素树而不是单独的值,因此当它作为参数传递给 ajax1 调用时,ajax 引擎将尝试从隐藏元素中检索值,这在各种情况下是不允许的原因。

      所以我更新如下

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

      现在可以正常使用了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-13
        • 1970-01-01
        • 2019-01-20
        • 1970-01-01
        • 2020-06-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多