我想将一些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
答案 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();
现在工作正常。