2

単純な$.post呼び出しを実行しようとしています。

<body>
<div id="main">
    <div id="diver">
    </div>
    <form id="entry_field_container" action="" method="post" accept-charset="utf-8">
        <input type="text" name="entry_field" value="" id="entry_field">

        <input id="send" type="submit" value="send">
    </form>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
    $(document).ready(function(){
        $('#send').click(function(e){
            e.preventDefault();
            var txt = $('#entry_field').val();
            $.post(
                'http://localhost/proc.php',
                {
                    name:'me',
                    text:txt
                },
                function(data){
                    console.log(data);
                    $('#diver').html(data)
                },
                'json'
            )

        })
    });
</script>

proc.php内:

<?php
    $name = $_POST['name'];
    $text = $_POST['text'];
    echo "{\"" . $name . "\", \"" . $text . "\"}";
?>

何らかの理由で、POSTは200を返しますが、コンソールが返されることはなく、data空白になっています。

私が理解するのが最も難しいのは、この$.ajax関数が毎回機能する理由です。同じことのより冗長な例ではありませんか?

$.ajax({
    'type':    'POST',
    'url':     'http://localhost/proc.php',
    'async':   true,
    'cache':   false,
    'global':  false,
    'data':    {
       'name':'me',
        'text':txt
    },
    'error': function(xhr,status,err){
        alert("DEBUG: status"+status+" \nError:"+err);
    },  
    'success': function(data){
        console.log(data);
    }   
});
4

2 に答える 2

5

あなた$.postはjQueryに返されるテキストがJSONであることを伝えていますが、あなた$.ajaxはそうではありません。

$.postPHPから返されたテキストが有効なJSONではないため、失敗します。

{"me", "test"}

これは有効なJSONではありません。 {}はオブジェクトであるため、キーが必要です。

{"name": "me", "text": "test"}

または、配列([])が必要な場合もあります。

["me", "test"]

PS PHPでJSONを作成するときは、JSONを自分で作成する代わりに使用することを強くお勧めします。json_encode

于 2012-08-09T20:55:45.140 に答える
5

$ .post呼び出しで「json」形式を指定していますが、$。ajax呼び出しでは指定していません。有効なJSON応答が返されていない可能性があります。そのため、$。postは成功しません。方法?

于 2012-08-09T20:55:58.530 に答える