Php 阿贾克斯正在躲避我。如何执行一个简单的ajax请求?
好的背景我是一个js和ajax的noob。我主要在php和mysql HTML5中工作,我决定与时俱进,不再为简单的事情重新加载页面 我试图对一个php文件发出一个简单的ajax请求并打印结果 因此,在我的页面上有一个带有id密码的文本bax(另一个实验的剩余内容) jquery ui选项卡设置,带有id为galleries的选项卡和id为my galleries的div。其思想是,单击galleries选项卡时,密码字段的值被拉入并发送到php文件my-gallers.php,结果被打印到div my gallers并显示出来 守则:Php 阿贾克斯正在躲避我。如何执行一个简单的ajax请求?,php,javascript,ajax,jquery,Php,Javascript,Ajax,Jquery,好的背景我是一个js和ajax的noob。我主要在php和mysql HTML5中工作,我决定与时俱进,不再为简单的事情重新加载页面 我试图对一个php文件发出一个简单的ajax请求并打印结果 因此,在我的页面上有一个带有id密码的文本bax(另一个实验的剩余内容) jquery ui选项卡设置,带有id为galleries的选项卡和id为my galleries的div。其思想是,单击galleries选项卡时,密码字段的值被拉入并发送到php文件my-gallers.php,结果被打印到di
<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>
然后是php
$password= $_REQUEST['password'];
$salt= uniqid();
$str= $salt.$password;
$hash= hash("sha512", $str);
echo $hash;
根据图坦卡蒙的说法,我一直在读这本书,它应该是有效的,但它没有。我想不出来。您的问题是您正在请求JSON;您的数据绝对不是JSON。它是纯文本,因此使用
'text'
数据类型
:
$("#galleries").click(function(){
$.ajax({
type: 'POST',
url: 'my-galleries.php',
dataType: 'jsontext',
data: {
password : $('#password').val()
},
success: function(msg) {
$("#my-galleries").html(msg)
}
});
});
$(“#图库”)。单击(函数(){
$.ajax({
键入:“POST”,
url:“my galleries.php”,
数据类型:“json文本”,
数据:{
密码:$('#password').val()
},
成功:功能(msg){
$(“#我的画廊”).html(msg)
}
});
});代码>您应该更改
echo $hash;
到
然后在成功块中按此方式访问它:
$("#my-galleries").html(msg.response);
假设您出于某种原因确实需要json。否则一定要用
…而且,我的意见是,你应该死($hash)
和notecho$hash代码>:在响应时终止脚本。使用浏览器中的调试工具,例如Firefox中的Firebug或Google Chrome/Chrome中的开发者工具
这将向您显示可能存在的问题。它们可能是:
您的JavaScript中有一个错误
你可能问错了目的地
请求后可能会有重定向
服务器上可能有错误(导致未执行success()
回调)。使用调试工具检查响应
数据类型可能不是您指定的类型。检查它是否是JSON
$
可能未定义。检查它是否是
可以在DOM对象(特别是带有“库
”ID的对象)可用之前执行JS。把你的代码放在$(function(){/*你的代码在这里*/})代码>
等等
您是否尝试过在FireFox浏览器中使用FireBug来查看Javascript错误?什么是“不工作”?你有javascript错误吗?代码是否到达ajax成功处理程序?如果是的话,msg
的值是多少?您是否遇到ajax错误?您是否创建了一个错误处理函数,并查看它是否被错误信息调用?您是否查看了javascript调试器中的网络跟踪,并查看了通过网络实际发送的内容?这些都是标准的调试方法。为什么在响应时终止脚本?我工作的公司的标准实践。我们没有让ajax处理程序在特定方法之外运行的习惯,但是如果您碰巧在一个有条件的环境中运行它,并且在它下面有非条件的东西,那么您可能会响应其他不想要的东西,并得到不想要的效果。当然,这取决于您的编程风格,或者您在公司工作时继承的代码风格。另外,如果您也非常糟糕,以至于有一个30k行的ajax处理程序,它将停止对文件的评估。。。看到了吗?@KaiQing:不好的做法,但如果你有一个旧的、不可维护的系统,它会在之后打印出一些东西,这是合理的做法。在正常情况下,您不应该这样做,因为这实际上会使系统无法维护。系统的不可维护性是否也取决于编码样式/标准?正如我在我的帖子中所说的——只是我的观点。这确实是个问题,但可能还有更多的问题,例如,$(“#画廊”)
如果使用不正确,可能找不到任何东西(见我的答案)。但是如果不更改数据类型(或删除它),它无论如何都不会工作;)@SpeedCrazy:很好:)那么接受他的答案,下次在你的问题中提供更多细节:)@SpeedCrazy:如果这是答案,你应该这样标记(点击^4 v
下的绿色复选框)以供将来的访客。我告诉过你我是一个noob,我不知道该提供什么信息。如果你问我,我会回答的。谢谢,我不知道accept功能。@SpeedCrazy:我不必问你-我告诉过你在我提到的大多数情况下该怎么办,有多种可能性:)jfriend00在评论中问了类似的问题,但我相信没有得到回答。不管怎么说,问题解决了,minitech正确地识别并修复了它,没有发现其他问题:)祝你好运!
echo json_encode(array('response' => $hash));
$("#my-galleries").html(msg.response);