[英]Is this a jQuery bug? $.post vs $.ajax
更新:我的代碼可能令人困惑並包含錯誤。 但這是我試圖對 $.ajax 和 $.post 做的事情----我想將 JSON 發送到 php 並接收純文本。 但是 $_POST 是空的<-為什么?-----
如果我使用 $.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 部分運行,它只提示“新數據:”但如果我反過來做,我會得到我在#field 中輸入的任何內容
您錯誤地使用$.ajax()
。 $.ajax
的data
參數被包裹在一個字符串中。 嘗試這個:
$.ajax({
type: "POST",
url: "Ajax_example.php",
data: {field: $("#field").val() },
success: function(msg){
alert("NEW DATA:"+msg);
}
});
在您說不工作的部分中,您正在竭盡全力為您的數據創建一個字符串,但是在您說正在工作的部分中,您正在傳遞一個 object 文字(首選)。 修復 $.ajax 部分以傳遞 object 文字作為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();
} );
} );
您的數據在 $receive 變量中,而不是 $_POST。 嘗試:
<?php
$receive=file_get_contents('php://input');
$receive=json_decode($receive, TRUE);
echo $receive['field'];
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.