更新:我的代码可能会令人困惑并且包含错误。但这就是我要用$ .ajax和$ .post做的事情 ----我想将JSON发送到php并接收纯文本。但是$ _POST是空的< -why?-----
如果我使用$ .ajax,我发现$ _POST为空,但在使用$ .post时包含正确的内容 更新:要求 - 我需要使用JSON请求。但是问题是$ _POST在php中是空的,请参阅Var_dump 这是我的剧本
<script>
$(document).ready(function(){
$("#submit").click(function(){
$.ajax({
type: "POST",
url: "Ajax_example.php",
data: {"field": $("#field").val()},
contentType: "application/json; charset=utf-8",
success: function(msg){
alert("NEW DATA:"+msg);
}
});
/* $.post("Ajax_example.php", {"field": $("#field").val()},
function(msg){
alert("NEW DATA:"+msg);
});*/
return false;
})
});
</script>
这是我的php
<?php
echo var_dump($_POST);
?>
使用上述内容,$ .post部分是评论。运行$ .ajax部分时,它仅警告“NEW DATA:” 但是,如果我反过来这样做,我会得到我放在#field
中的任何东西答案 0 :(得分:4)
您错误地使用了$.ajax()
。 data
$.ajax
参数包含在字符串中。试试这个:
$.ajax({
type: "POST",
url: "Ajax_example.php",
data: {field: $("#field").val() },
success: function(msg){
alert("NEW DATA:"+msg);
}
});
答案 1 :(得分:1)
在你说不起作用的部分,你需要花费很大的精力来为你的数据创建一个字符串,但是在你说的部分工作中,你传递的是一个对象文字(首选)。修复$ .ajax部分以将对象文字作为data
选项传递。
您还传递contentType
选项,但没有dataType
选项。使用以下代码块中的任一版本:
$( function()
{
$( '#submit' ).click( function( e )
{
/**
THIS
*/
$.ajax( {
type: 'POST',
url: 'Ajax_example.php',
data: {
field: $( '#field' ).val()
}
success: function( msg )
{
alert( 'NEW DATA:' + msg );
},
dataType: 'json'
} );
/**
IS THE SAME AS THIS
*/
$.post( // type implied in method name
// url
'Ajax_example.php',
// data
{
field: $( '#field' ).val()
},
// success
function( msg )
{
alert( 'NEW DATA:' + msg );
},
// dataType
'json'
);
/**
DON'T RETURN FALSE...CONTROL YOUR EVENT INSTEAD
*/
e.preventDefault();
} );
} );
答案 2 :(得分:0)
您的数据位于$ receive变量中,而不是$ _POST。尝试:
<?php
$receive=file_get_contents('php://input');
$receive=json_decode($receive, TRUE);
echo $receive['field'];
?>