【发布时间】:2012-08-09 20:53:40
【问题描述】:
我只是想进行一个简单的 $.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);
}
});
【问题讨论】:
-
您的数据是否会发送到服务器?使用 AJAX 视图(例如 Chrome 或 Safari 中内置的视图,或使用 Firefox+Firebug)进行检查。还要确保您没有任何 JS 错误或警告。
-
我想是的,是的。在 Inspector 中,我可以查看
proc.php->Preview并看到{"me", "the text"},所以看起来 proc.php 正在读取 POST 变量。