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你不是。

失败是因为从 PHP 返回的$.post文本不是有效的 JSON。

{"me", "test"}

这不是有效的 JSON。 {}是一个对象,所以它需要键:

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

或者,也许您想要一个数组 ( []):

["me", "test"]

PS 在 PHP 中创建 JSON 时,强烈建议您使用json_encode而不是自己制作 JSON。

于 2012-08-09T20:55:45.140 回答
5

您在 $.post 调用中指定了“json”格式,但在 $.ajax 调用中没有指定,可能是您没有返回有效的 JSON 响应,这就是您的 $.post 没有执行成功的原因方法?

于 2012-08-09T20:55:58.530 回答