下面是我的Php文件,在那里我使用.html
调用另一个php文件,在提交按钮后获取一些数据:
index.html
另一个php文件是:
ajax
当我写一些文字并点击提交按钮时,输入字段的文本显示在url中,并且不会从另一个php文件中获取任何数据。为什么?任何人都可以给我一些线索或帮助吗?谢谢。
答案 0 :(得分:0)
单击按钮后,表单已提交,您需要使用preventDefault()
方法停止该行为。用以下内容替换脚本:
<script>
$(document).ready(function(){
$('.refresh').click(function(e){
e.preventDefault(); // this line will prevent submission of form
// var formData = new FormData($(this)[0]);
//event.preventDefault();
$.ajax({
url:'ajax.php',
type:'POST',
// data:{roll:'rana'},
//async:false,
success:function(response){
alert(response);
//document.write(response);
},
cache:false,
contentType:false,
processData:false
});return fasle;
});
});
</script>
答案 1 :(得分:0)
您的ajax.php
文件中没有收到任何POST数据,因为没有,您的ajax请求中的data
对象为空并已注释掉。
与您期望的相反,您的表单值不能通过POST发送到您的PHP文件,类似于使用action="file.php method="post"
,因为在AJAX中您必须手动&#34;建立&#34; <{1}}对象作为POST请求发送。
以下是它的工作原理:
表单文件:
data
后端文件:
<form>
<input placeholder="text here" id="string">
<input type="submit" class="refresh" value="submit">
</form>
<script>
$(document).ready(function() {
$('.refresh').click(function(e) {
e.preventDefault();
$.ajax(
{
url:'ajax.php',
type:'POST',
data:{
string: $('#string').val()
},
success:function(response) {
alert(response);
}
}
);
});
});
</script>
注意我是如何通过<?php
echo $_POST['string'];
?>
而不是id
命名输入的,并通过name
检索该值,然后将其分配给$('#string').val()
,并通过POST请求发送。string
您应该对表单中的每个输入字段执行相同的操作。
另外,你不需要这些:
cache:false,
contentType:false,
processData:false
因为原因。