我有一个表单,我想使用php
将数据发送到AJAX
脚本。但是我遇到了实际传递数据的问题。由于某种原因,$_POST
数组为空。
目前HTML
是:
<form>
<label>Email Address:</label>
<input type='text' name='email' value='jackc@test.com'/>
<input type='submit' name='submit' value='Check subscription status'/>
</form>
JQuery
是:
$(document).ready(function() {
$('form').submit(function(e){
e.preventDefault();
var url = 'request.php';
$.ajax({
type: 'POST',
url: url,
contentType: "json",
data: $('form').serialize(),
success: function(data){
console.log(data);
$('#results').html(data);
}
});
});
});
PHP
是:
$emailAddress = $_POST['email'];
echo "EMAIL: " . $emailAddress;
然而,它没有返回任何东西。每次都是空白的。当我为$('form').serialize()
执行控制台日志时,我看到email=jackc%40@test.com
我希望从我的PHP
返回。{/ p>
我很感激对此有所帮助。非常感谢。
答案 0 :(得分:1)
关于这个:
当我为$(&#39;表格&#39;)执行控制台日志时,我看到了serialize() email=jackc%40@test.com
您已指定contentType: "json"
,但发送了类似application/x-www-form-urlencoded
的内容。
您可以在此处看到一个示例:JQuery Post sends form data and not JSON
答案 1 :(得分:1)
测试一下:
$('form').submit(function(e){
e.preventDefault();
var url = 'request.php';
var $form = $(this);
var request ={
email : $form.find("[name=email]").val(),
};
$.ajax({
type: 'POST',
url: url,
data: request,
success: function(data){
console.log(data);
$('#results').html(data);
}
});
});
答案 2 :(得分:1)
您不发送json数据,因此您需要从ajax请求中删除“contentType”。
答案 3 :(得分:0)
添加dataType: "json",
代替contentType: "json",
将数据作为表单数据发送,并以json格式接收数据:
$(document).ready(function() {
$('form').submit(function(e){
e.preventDefault();
var url = '';
$.ajax({
type: 'POST',
url: url,
dataType: "json",
data: $('form').serialize(),
success: function(data){
console.log(data);
$('#results').html(data);
}
});
});
});
如果您不想接收json数据,请完全删除contentType
:
$(document).ready(function() {
$('form').submit(function(e){
e.preventDefault();
var url = '';
$.ajax({
type: 'POST',
url: url,
data: $('form').serialize(),
success: function(data){
console.log(data);
$('#results').html(data);
}
});
});
});
答案 4 :(得分:0)
将dataType添加为json而不是contentType,并从服务器返回json编码数据。
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<form id="test">
<label>Email Address:</label>
<input type='text' name='email' value='jackc@test.com'/>
<input type='submit' name='submit' value='Check subscription status'/>
</form>
<div id="results"></div>
<script type="text/javascript">
$(document).ready(function() {
$('#test').submit(function(e){
e.preventDefault();
var formdata = $('#test').serialize();
var url = 'request.php';
alert(formdata);
$.ajax({
type: 'POST',
url: url,
data: formdata,
dataType: "json",
encode :true,
success: function(data){
console.log(data);
$('#results').html(data);
}
});
});
});
</script>
<强> request.php 强>
<?php
$emailAddress = $_POST['email'];
echo json_encode("EMAIL: " . $emailAddress);
?>