您好我已经在这几天了,我只是想弄清楚为什么这不起作用,请有人来看看。
的index.php
<form id = "update_status" method = "POST">
<textarea id="shadow" name ="user_status" placeholder = "Share what is on your mind!" cols="97" rows="1" title="Share what's on your mind"></textarea>
<input style="float:right; margin-top: 0.3%;margin-right : 0% !important;" id = "btnStatus_update" name = "btnStatus_udate" type="button" value="Add Post" title="Your posts will be made public"></input></form>
swift.php
$(document).ready(function(){
$("#btnStatus_update").click(function(e) {
e.preventDefault();
//alert("Confirming function works");
$.ajax({
cache: false,
type: 'POST',
url: './datacenter.php',
data: $("#user_status"),
success: function(d) {
$("#successMesg").html(d);
}
});
});
});
datacenter.php
if (isset($_POST['user_status'])) {
var_dump($_POST['user_status']);
foreach ($_POST as $ak => $av) {
if (empty(trim($_POST['user_status']))) {
echo 'Say what is on your mind'.' ';
} else {
$userstatus = $_POST['user_status'];
add_user_status($user_data['id'], $userstatus);
}
}
}
使用var_dump进行测试我希望它确实返回数据,但我得到NULL,我需要数据,所以我可以将它传递到add_user_status函数以添加到数据库,但似乎有些东西丢失或关于代码否认我的满意度。请帮忙
答案 0 :(得分:1)
似乎缺少一些东西:
的index.php:
您需要在表单标记中添加action="something"
属性,这会告诉表单提交时要执行的操作。 (除非你手动处理这个是其他地方的JS?)
<form id = "update_status" action ="data.php" method = "POST">
此外,除非您在索引页面上使用JavaScript来处理表单的实际提交,否则<input>
应包含type="submit"
属性。 (这也会使其成为一个按钮),点击后它会自动将表单提交到上面的action
位置。
Swift.php:
发布的代码是JS,并执行上一段提到的第一行(处理提交按钮)。您是否在index.php
中包含此文件?如果index.php
无法看到它,那么它就不会运行。它也必须位于适当的<script>
块中的某个地方。
我认为使用ajax发送表单数据的正确方法是序列化数据:
$('#update_status').serialize()
而不只是发送一个输入字段。
您还需要引用jQuery库,最好是在索引中,但也可以在swift.php中引用。我还假设发布的代码出现在必要的<script>
块中。
Data.php:
这应该是datacenter.php
吗?您的Swift.php
正在向./datacenter.php
另外,如果您需要使用Ajax,那么您实际上并不需要表单中的action ="data.php" method = "POST"
(Ajax会为您完成所有这些)
可以这样做的方式是这样的:
的index.php:
// HTML beginning stuff
<head>
// Either reference the script in its own JS file or:
// Need to also include jquery library
<script type="text/javascript">
$(document).ready(function(){
$("#btnStatus_update").click(function(e) {
e.preventDefault();
//alert("Confirming function works");
$.ajax({
cache: false,
type: 'POST',
url: './datacenter.php',
data: $('#update_status').serialize(),
success: function(d) {
$("#successMesg").html(d);
}
});
});
});
</script>
</head>
<body>
<form id = "update_status">
<textarea id="shadow" name ="user_status" placeholder = "Share what is on your mind!" cols="97" rows="1" title="Share what's on your mind"></textarea>
<input style="float:right; margin-top: 0.3%;margin-right : 0% !important;" id = "btnStatus_update" name = "btnStatus_udate" type="button" value="Add Post" title="Your posts will be made public"></input>
</form>
</body>
datacenter.php:
<?php
var UserStatus = user_status
if (!empty(UserStatus)) {
var_dump($_POST['user_status']);
// process as necessary
}
?>
但是,包括
<form id = "update_status" action ="datacenter.php" method = "POST">
并将按钮更改为
<input style="float:right; margin-top: 0.3%;margin-right : 0% !important;" id = "btnStatus_update" name = "btnStatus_udate" type="submit" value="Add Post" title="Your posts will be made public">
将允许用户仍然发布信息。
答案 1 :(得分:0)
textarea的选择器不正确,id不是“user_status”,它的“影子”
data: $("#user_status"),
应该是:
data: $("textarea[name=user_status]")
或
data: $("#shadow")