您好我正在尝试使用Ajax和Jquery将简单的html数据传递到php服务器。所以我制作了一个非常简单的剧本:
<script>
$("document").ready(function(){
$(".enviarJson").on("click",function(){
var valor = $(this).attr("value");
// alert(valor);
$.ajax({
type: "POST",
dataType: "HTML",
url: "devolve.php",
data: valor,
success: function(data) {
alert(data);
}
});
return false;
});
});
</script>
这是html:
<form>
<button class="enviarJson" value="q1?a1">Answer 1</button>
<button class="enviarJson" value="q1?a2">Answer 2</button>
</form>
现在我的问题是如何将数据传递给 devolve.php 而不知道$ _POST []的id是什么?
例如,使用常规的帖子形式,我可以这样做:
<form action="devolve.php" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>
然后我可以通过这样的方式得到devolve.php上的名字:
<?php
$name = $_POST['name'];
?>
答案 0 :(得分:3)
您还没有为POST数据命名。它只是一个裸值,这意味着PHP没有什么可以用作$ _POST中的键:
data: valor,
^---no name
尝试
data: {name:valor},
可以让您使用$_POST['name']
。
或者,您可以阅读原始POST数据:
$name = file_get_contents('php://input');
答案 1 :(得分:0)
使用.serialize()
-
$(".enviarJson").on("click",function(){
var valor = $('form').serialize(); // serializes all of the form data in name / value pairs
// alert(valor);
$.ajax({
type: "POST",
dataType: "HTML",
url: "devolve.php",
data: valor,
success: function(data) {
alert(data);
}
});
return false;
})
如果您在页面上有多个表单的情况下给表单提供某种身份证明,那会更好。