簡體   English   中英

這是 jQuery 錯誤嗎? $.post 與 $.ajax

[英]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() $.ajaxdata參數被包裹在一個字符串中。 嘗試這個:

$.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM