Javascript 无需页面刷新的AJAX到PHP
我在让表单向PHP文件提交数据时遇到了一些问题 如果没有我拥有的AJAX脚本,表单会引导用户进入“xxx.php”并提交数据库中的数据,但是当我包含此脚本时,它会阻止页面刷新,显示成功消息,并在“myDiv”中淡出,但数据库中不会出现任何数据 任何指向正确方向的指示都将不胜感激。在这件事上把我的头发拔出来 HTMLJavascript 无需页面刷新的AJAX到PHP,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我在让表单向PHP文件提交数据时遇到了一些问题 如果没有我拥有的AJAX脚本,表单会引导用户进入“xxx.php”并提交数据库中的数据,但是当我包含此脚本时,它会阻止页面刷新,显示成功消息,并在“myDiv”中淡出,但数据库中不会出现任何数据 任何指向正确方向的指示都将不胜感激。在这件事上把我的头发拔出来 HTML 您的内容 JavaScript <script> $(document).ready(function(){ $("#subbutton
您的内容
JavaScript
<script>
$(document).ready(function(){
$("#subbutton").click(function(e){
e.preventDefault();
var content = $("#content").attr('value');
$.ajax({
type: "POST",
url: "xxx.php",
data: "content="+content,
success: function(html){
$(".myDiv").fadeTo(500, 1);
},
beforeSend:function(){
$("#message").html("<span style='color:green ! important'>Sending request.</br></br>");
}
});
});
});
</script>
$(文档).ready(函数(){
$(“#子按钮”)。单击(函数(e){
e、 预防默认值();
var content=$(“#content”).attr('value');
$.ajax({
类型:“POST”,
url:“xxx.php”,
数据:“content=“+content,
成功:函数(html){
美元(“.myDiv”).fadeTo(500,1);
},
beforeSend:function(){
$(“#消息”).html(“发送请求。”);
}
});
});
});
将数据字段更改为
data:{
content:$("#content").val()
}
还将atribute错误添加到带有
error:function(e){
console.log(e);
}
并尝试在php文件中将var dump返回给$\u POST
最重要的是根据您发送的内容向ajax中添加数据类型atribute:
dataType: "text" //text if You try with the var dump o json , whatever.
另一个解决方案是:
$.ajax({
type: "POST",
url: "xxxwebpage..ifyouknowhatimean",
data: $("#idForm").serialize(), // serializes the form's elements.
dataType:"text" or "json" // According to what you return in php
success: function(data)
{
console.log(data); // show response from the php script.
}
});
在Ajax请求中设置如下数据类型:
data:{content:content}
我认为它不是正确的JSON格式 几处小改动应该可以让您启动并运行。首先,使用
.val()
获取输入值:
您提到您正在检查submit按钮isset()
,但您从未将其值发送到PHP函数。为此,您还需要获取其值:
var submit = $('#subbutton').val();
然后,在AJAX函数中正确指定数据:
$.ajax({
type: "POST",
url: "xxx.php",
data: {content:content, subbutton: submit}
...
数据属性名称上不需要引号
然后在PHP端检查提交按钮,如下所示-
if('submit' == $_POST['subbutton']) {
// remainder of your code here
内容将在
$\u POST['Content']
中提供,请尝试var Content=$(“#Content”).val()
。此外,您是否检查了浏览器控制台日志,以查看发布的值。另外,您的php代码是否有一个isset($\u POST['submit'])
或其他检查,您没有通过ajax发送?调试时,具体在哪里失败?JavaScript是否运行正常?是否发出了AJAX请求?该请求是否包含您期望的数据?服务器端代码中是否有错误?服务器端代码是否可以看到您期望的数据?服务器端代码中的逻辑是否成功到达它试图写入数据库的部分?它有你期望的价值吗?等等,等等……我的php确实有isset($_POST['submit'])。我将尝试val()并查看它现在是否有效。好的,使用val()可以它正在做完全相同的事情,作为对您的回应,David在控制台上运行时没有出现错误。当我在没有AJAX的情况下运行表单时,PHP会将值完美地传递到数据库,因此我知道这是AJAX的一个问题。您能否向我们展示#content
的标记?请使用console.log()
相反。这只是一个表达式哈哈,算了吧:)*这里不需要fixedQuotes,除非它包含在值中。对不起,你不能编辑我的答案吗?我在打电话,我没有回音。我不是在说回音,我是在说内容周围的引号。哦,天哪,我现在看到了。是的,我错了。现在更正它。因为content
是一个变量,所以这里的值也不需要引号。你是一颗钻石。谢谢你,这真是一种享受。:)
$.ajax({
type: "POST",
url: "xxx.php",
data: {content:content, subbutton: submit}
...
if('submit' == $_POST['subbutton']) {
// remainder of your code here