好的背景我是js和ajax noob。我主要在php和mysql html 5工作,我决定与时俱进,不再为简单的事情重新加载页面。
我正在尝试向php文件发出一个简单的ajax请求并打印结果。
所以在我的页面上我有一个带有id密码的文本bax(来自另一个实验的剩余部分) 一个jquery ui标签设置,带有一个带有id画廊的标签和一个带有id-gallery的div。这个想法是,在点击画廊选项卡后,将拉取密码字段的值并将其发送到php文件my-galleries.php,结果将打印到div my-gallery并显示。
代码:
<input type="password" id="password"/>
<div id="tabs">
<ul>
<li id="welcome"><a href="content/welcome.html">Welcome</a></li>
<li><a href="content/about.html">About</a></li>
<li><a href="#my-galleries" id="galleries">Galleries</a></li>
<li><a href="content/contact.html">Contact</a></li>
</ul>
<div id="my-galleries"></div>
</div>
然后是js
$("#galleries").click(function(){
$.ajax({
type : 'POST',
url : 'my-galleries.php',
dataType : 'json',
data: {
password : $('#password').val()
},
success: function(msg){
$("#my-galleries").html(msg)
}
})
});
然后是php
$password= $_REQUEST['password'];
$salt= uniqid();
$str= $salt.$password;
$hash= hash("sha512", $str);
echo $hash;
根据tuts我一直在阅读它应该工作,但事实并非如此。我无法弄明白。
答案 0 :(得分:4)
你的问题是你正在申请JSON;你的数据肯定不是JSON。这是纯文本,因此请使用'text'
dataType
:
$("#galleries").click(function(){
$.ajax({
type: 'POST',
url: 'my-galleries.php',
dataType: 'jsontext',
data: {
password : $('#password').val()
},
success: function(msg) {
$("#my-galleries").html(msg)
}
});
});
答案 1 :(得分:3)
使用浏览器中的调试工具,例如。 Firefox中的Firebug或Google Chrome / Chromium中的开发人员工具。
这将向您显示可能存在的问题。它们可能如下:
success()
回调未被执行)。使用调试工具检查响应。$
可能未定义。检查是否。galleries
”ID的对象)可用之前执行。把你的代码放在例如。在$(function(){/* your code here */});
。答案 2 :(得分:0)
你应该改变
echo $hash;
到
echo json_encode(array('response' => $hash));
然后在你的成功块中访问它:
$("#my-galleries").html(msg.response);
假设你出于某种原因真的想要json。否则绝对使用minitech's answer。
...而且,我的意见是,你应该die($hash);
而不是echo $hash;
:在回复时杀死脚本。