【发布时间】:2011-11-16 15:24:39
【问题描述】:
我一直在尝试获取这个非常简单的示例,该示例将 AJAX 与 JQuery 和 PHP 一起使用,但没有成功 (here's the page for the sample)。我看过很多类似描述的帖子,但没有一个有帮助......
我已经完全复制了代码,但是我应该在成功时运行的函数从未被调用过。作为一个实验,在对 $.post 的调用中,我注释掉了数据部分 ({sendValue:str}) 和 JSON 部分,并在成功函数的主体中添加了一个警报,以查看它是否被调用了。所以我猜我创建数据的方式有问题吗?我还尝试在警报中显示从 AJAX 调用返回的数据,结果显示为“未声明”(data.returnValue)。
这是我的代码的副本,您可以通过上面的链接查看完整示例,也可以在此处查看教程作者的工作示例:http://www.devirtuoso.com/Examples/jQuery-Ajax/
jQuery:
$(document).ready(function(){
$('#txtValue').keyup(function(){
sendValue($(this).val());
});
});
function sendValue(str){
$.post("ajax.php",
{ sendValue: str },
function(data){
$('#display').html(data.returnValue);
},
"json"
);
}
PHP:
<?php
//Get Post Variables. The name is the same as
//what was in the object that was sent in the jQuery
if (isset($_POST['sendValue'])){
$value = $_POST['sendValue'];
}else{
$value = "";
}
//Because we want to use json, we have to place things in an array and encode it for json.
//This will give us a nice javascript object on the front side.
echo json_encode(array("returnValue"=>"This is returned from PHP : ".$value));
?>
HTML:
<body>
<p>On keyup this text box sends a request to PHP and a value is returned.</p>
<label for="txtValue">Enter a value : </label><input type="text" name="txtValue" value="" id="txtValue">
<div id="display"></div>
</body>
谢谢!
编辑: 我将我的 $.post 重写为一个带有错误函数的 $.ajax。我肯定会遇到错误函数,错误是解析错误 - 我猜它来自我的 PHP 脚本,当我调用 json_encode 时......这是来自 firebug 的屏幕截图 - 有人有更多想法吗?:
Screenshot 1 - firebug console
Screenshot 2 - firebug watch window
顺便说一句,感谢您提供的所有帮助,非常感谢。
【问题讨论】:
-
您是否尝试过在 PHP 中尽早回显或 var_dumping,然后退出以查看您的 post 调用是否到达正确的位置 (ajax.php)?
-
@csjohn 我现在就试一试,让你知道会发生什么......
-
在您的代码中有 ajax.php - 这是读取值吗?如果不能,请告诉我们真正的价值是什么?
-
@ManseUK 是的,这是真正的价值。我只是将 $.post 调用重写为“POST”类型的 $.ajax 调用,并给它一个成功函数和一个错误函数——我添加到成功函数的警报被击中。然后我尝试输出 data.returnValue ,它应该给了我从 PHP 文件返回的字符串,但它显示为“未定义”。认为我需要坐下来与萤火虫一起完成所有事情 - 我会更新我的进度。干杯