我实现了一种使用javascript在我的网页上提交表单的新方法,以便在不重新加载/刷新页面的情况下显示成功结果。我是Javascript的新手,我确信我错过了一些明显的东西。
我知道这不是由于数据库限制,我已经仔细检查以确保它不是某种外键错误。
我知道php post查询的工作原理,因为它仍然适用于我在实现javascript之前使用的原始表单。
新守则:
<div id="contact_form">
<form name="contact" action="">
<fieldset>
<input type="hidden" name="likesid" id="likesid" size="30" value="4" class="text-input" />
<input type="hidden" name="likerid" id="likerid" size="30" value="117" class="text-input" />
<br />
<button style="width: 100%; border: none; background:none!important; background-color: transparent; cursor: pointer;" type="submit" name="unlikestatus" class="button" id="submit_btn">
<i class="fa fa-thumbs-o-up fa-fw ss-large ss-text-blue"></i>
</button>
</fieldset>
</form>
</div>
<script>
$(function() {
$(".button").click(function() {
// validate and process form here
});
});
$(function() {
$('.error').hide();
$(".button").click(function() {
// validate and process form here
$('.error').hide();
var likesid = $("input#likesid").val();
if (likesid == "") {
$("label#likesid_error").show();
$("input#likesid").focus();
return false;
}
var likerid = $("input#likerid").val();
if (likerid == "") {
$("label#likerid_error").show();
$("input#likerid").focus();
return false;
}
var dataString = 'likesid='+ likesid + '&likerid=' + likerid;
//alert (dataString);return false;
$.ajax({
type: "POST",
url: "simpletest.php",
data: dataString,
success: function() {
$('#contact_form').html("<div id='message'></div>");
$('#message').html("<h2>Liked!</h2>")
.hide()
.fadeIn(1500, function() {
$('#message').append("");
});
}
});
return false;
});
});
</script>
我不确定javascript在这种情况下是如何工作的,但在PHP中,我正在使用这一行
if(isset($_POST['likestatus']))
我没有在我的javascript中看到任何指向“likestatus”的地方,我假设这可能是问题?有可能吗?
我收到了这个javascript代码并将其从here
更改了答案 0 :(得分:2)
PHP帖子请求正在您的表单上查找名称=&#39; likestatus&#39;的字段,该字段在上面的代码中不存在。要将该值传递给ajax调用,您需要先将该字段添加到HTML表单中。
您还需要将它添加到javascript变量dataString,该变量通过ajax传递给PHP调用。
说明:
ajax调用上的 data 属性定义了传递给指定的 url 属性的所有变量。如果ajax调用通过,它将触发 success 属性,这并不一定意味着数据已保存在数据库中。