Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 阿贾克斯正在躲避我。如何执行一个简单的ajax请求?_Php_Javascript_Ajax_Jquery - Fatal编程技术网

Php 阿贾克斯正在躲避我。如何执行一个简单的ajax请求?

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

好的背景我是一个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并显示出来

守则:

<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)
和not
echo$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);