【问题标题】:Jquery post function not returning output?Jquery post函数不返回输出?
【发布时间】:2012-09-29 20:59:44
【问题描述】:

我正在尝试学习一点 AJAX,但在从 php 脚本获取输出方面遇到了困难。

这是我目前正在使用的代码:

<form>
        <input type="text" id="url" name="url" value="" onkeydown="if (event.keyCode == 13 || event.which == 13) {go($('#url').val());} "/><input type="submit" id="submit" name="submit" value="SHORTEN" onclick="go($('#url').val());"/>
        </form>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
    <script src="js/jquery.js" type="text/javascript"></script>

    <script type="text/javascript">
        function go(url){
            $.post('url.php', {url: url}, 
            function(data){
                $("#result").html(data).stop();
            });
            alert(url);
        };
    </script>

目前 url.php 脚本只是为了测试目的而回显随机文本。

当我运行 go() 函数时,它只包含警报,但 $.post() 函数似乎有问题,因为它没有得到 url.php 的回显字符串并且没有警报框当输入或单击提交按钮时打开。

谢谢

附言

这是一个示例,说明当您在文本字段中放置内容并提交下面的区域时,我尝试执行的操作未填充输出表单 url.php - chrissepham.co.uk

编辑 - 我正在使用谷歌浏览器

【问题讨论】:

  • @user1141356 请不要在问题中更改代码!如果您有什么建议作为修复,将其发布为新答案

标签: php jquery ajax post


【解决方案1】:

您有一个 JavaScript 错误(特别是 url: url -- 您可能是指 {url: url} 或 'url=url')。您应该保持控制台打开,以便在调试时看到错误。

此类错误也往往会停止脚本的执行,这可以解释为什么您没有看到警报。

【讨论】:

  • 嗨,这是一个示例,说明当您在文本字段中放置内容并提交下面的区域时,我尝试执行的操作未填充输出表单 url.php - chrismepham.co.uk
  • @crm 我在你给我看的链接上打开了控制台,它正在使用url: url。为什么选择忽略我的回答?
【解决方案2】:

如果您的唯一目标是使用结果填充元素,请使用 .load() 方法:

$("#result").load("url.php", { "url": url } );

documentation中所写:

如果数据作为对象提供,则使用 POST 方法;

因此它与在原始代码中使用.post() 具有完全相同的效果。

【讨论】:

  • 在这种情况下为什么要使用加载而不是发布?
  • @ExplosionPills 一行而不是至少三行对我来说就足够了。 :)
  • 你不知道他的唯一目标是用结果填充元素;如果不是这种情况,使用.load 是有潜在危险的。
  • 这就是为什么我以“如果您的唯一目标是用结果填充元素”开始我的回答 - 这就是 OP 在原始代码中所做的事情。为什么.load() 很危险?需要详细说明吗?
  • 嗯,我倾向于同意你的观点,我只是喜欢扮演魔鬼的拥护者。 .load 很危险,因为 .post 请求不明确;如果有人(可能是一些没有经验的开发人员)出现并将{url:url} 更改为url=url,事情可能会神秘地破裂。 .load 也没有实现Deferred,这限制了它相对于其他ajax 的功能;即这更难维护(尽管它确实有它的目的)。
【解决方案3】:

我在 AJAX 和 Web2.0 应用程序中使用 jQuery 和 PHP。在我看来,您的 PHP 中很可能存在语法错误。如果您有语法错误,它将终止服务器端脚本,您将不会收到任何回复。尝试从您的 php 脚本中删除除“hello world”之类的 echo 语句之外的所有内容,然后使用 firebug 的控制台查看来自您的 POST 的回复。如果您还没有,我建议您阅读 XML。一旦你开始使用带有 AJAX 的 POST,就很难切换到标准化的数据通信形式,例如 XML(一旦你使用 PHP 进入 OOP,这使得数据解析变得非常容易)

【讨论】:

  • 另外,我建议将 .ajax 函数与 jquery 一起使用。它更强大。为你:
  • $.ajax({url:'url.php'}).done(function(data){ $("#result").html(data).stop(); });警报(网址);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 2011-04-03
  • 1970-01-01
  • 2012-01-03
  • 2017-08-09
  • 2018-06-08
相关资源
最近更新 更多