【问题标题】:How to convert php code to JS for AJAX [closed]如何将 php 代码转换为用于 AJAX 的 JS [关闭]
【发布时间】:2014-12-02 05:03:24
【问题描述】:

我在一个文件(invasions.php)中有以下代码:

<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='content-type' content='text/html;charset=utf-8' />
    <script type='text/javascript' src='//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script>
    <script type='text/javascript' src='script.js'></script>
  </head>
<body>
  <div id='output'>
<?php
$url = "my api link here";
$data = json_decode(file_get_contents($url));
if(!empty($data->invasions)) {
    foreach ($data->invasions as $title => $inv) {
        print "<h3 style='text-align:center;margin:auto;'><b>District:</b> {$title}</h3><br style='font-size:1px;'><h3 style='text-align:center;margin:auto;'><b>Cog:</b> {$inv->type}</h3><br style='font-size:1px;'><h3 style='text-align:center;margin:auto;'><b>Progress:</b> {$inv->progress}</h3>";
        if (count(($data->invasions) > 1)) {
        if(end($data->invasions) !== $inv){
        print "<hr>";
        } else { 
        print "<br style='font-size:2px;'>"; }
        }
        }
} else {
echo "<h1 style='text-align:center;margin:auto;padding:2px;color:darkred;font-weight:bold;'>No invasions!</span>";
}
?>
</div>
</body>
</html>

在我的invitationapi.php 中,我有:

<?php
$assocArray = "https://www.toontownrewritten.com/api/invasions";
echo (file_get_contents($assocArray));
?>

在我的 script.js 中,我有:

$(function(){
function getData(){
  $.post('invasions.php', function(data){
    // var htm = do a bunch of stuff with the data Object, creating HTML
    $('#output').html(htm);
  });
}
setInterval(getData, 10000); // query every 10 seconds
});

我正在寻找一些帮助来将此 php 代码转换为 javascript,以便我可以通过 ajax 每 10 秒更新一次此数据。在上一个问题上,我收到了this 的回复,但我不知道该怎么做。我会很感激我能得到的任何帮助。我从来没有通过 javascript 运行过数据,也没有使用过 ajax,我不知道从哪里开始。

【问题讨论】:

  • 我真的不明白为什么这被否决了;我只是在寻求帮助摆脱我的 php 代码并通过 JS 完成它,以便我可以实现 settimeout/setinterval .. 这对其他人有何用处?我不知道我在用 JS 或 AJAX 做什么,我从未与他们合作过,我不能寻求一些帮助被指点指南之类的东西?
  • 您又发布了几乎相同的问题。在您之前的问题上,答案足以帮助您摆脱问题。这就是您的问题被否决的原因。
  • 这个问题似乎跑题了,因为 Stack Overflow 不是语言转换服务
  • 在这个 php 文件上每 10 秒发送一次 jquery ajax
  • @LittleBobbyTables 我试图弄清楚如何让我的 PHP 代码每 10 秒自动更新一次,但我不知道如何实现。在我之前的问题中,我得到了很多很好的答案,但我无法将各个部分放在一起。我将使用我尝试过的代码更新我的 OP。

标签: javascript php jquery ajax json


【解决方案1】:

出于安全原因,它不能用 JavaScript 完成。您无法从您的域以外的域获取数据。

但是,如果您的 API 提供 JSON-RPC 接口,则可以使用 JSON-RPC。

我认为你被否决了,因为你问的不是问题而是服务,这不是 StackOverflow 的目标

【讨论】:

  • 我现在在 OP 中从我自己的域中获取数据
【解决方案2】:

肯定可以用Javascript来做,是API服务。

使用 jQuery 库,然后添加以下内容:

var url = "https://www.toontownrewritten.com/api/invasions";
    $.get(url,{},function(data){
        for(var index in data.invasions){
              console.log(index);
            var value = data.invasions[index];
            console.dir(value);

                  $('#main').append("<h3 style='text-align:center;margin:auto;'><b>District:</b> "+index+"</h3><br style='font-size:1px;'><h3 style='text-align:center;margin:auto;'><b>Cog:</b> "+value.type+"</h3><br style='font-size:1px;'><h3 style='text-align:center;margin:auto;'><b>Progress:</b> "+value.progress+"</h3>");
             }     
});

我还没有完成,只是让你开始做,剩下的你自己想办法,不要害羞寻求帮助。

这里是 JSFiddle,玩它:http://jsfiddle.net/sameersemna/atyz2nw7/ 享受! ;)

编辑:

因为“没有可用数据”而分叉你的小提琴:http://jsfiddle.net/sameersemna/1tskmv1k/ 还添加了 jQuery 淡入淡出动画来消除“闪烁”

【讨论】:

  • 我可能做错了,因为它不起作用:/ 但我尝试向它添加一个 setInterval .. here 感谢您迄今为止提供的帮助@Sameer Shemna
  • 我认为您没有正确理解异步请求的概念,您应该阅读更多内容,并参考您的 JSFiddle 的这个分支:jsfiddle.net/sameersemna/rfrcb7oc 也请查看控制台以查看何时触发事件和收到数据
  • 谢谢@Sameer Shemna,我刚刚对其进行了测试,效果很好。
  • 帮自己一个忙,阅读有关 AJAX 和 jQuery 的信息,帮我一个忙,将答案标记为已接受;)
  • 感谢@Sameer Shemna,我正在阅读它,因为我正在尝试自定义它。如果没有数据,有没有办法改变我在顶部写着“入侵跟踪器”的文字来说别的东西? here 是没有数据时的样子。如果没有数据,我想更改文本以说其他内容,直到有数据,然后它可以说“Invasion Tracker”。我updated the jsfiddle
【解决方案3】:

使用这个 set url = "你的 php 文件 url"

$(document).ready(function(){
        var callAjax = function(){
          $.ajax({
            method:'get',
            url:'random.php',
            dataType:'html',
            success:function(data){
              $("#sample").html(data);
            }
          });
        }
        setInterval(callAjax,2000);
      });

【讨论】:

  • 谢谢@Harutyun Abgaryan,现在它正在输出JSON。我希望它输出 JSON 的格式化版本。我尝试将$("#main").html(data); 更改为$("#main").html("&lt;h3 style='text-align:center;margin:auto;'&gt;&lt;b&gt;District:&lt;/b&gt; "+index+"&lt;/h3&gt;&lt;br style='font-size:1px;'&gt;&lt;h3 style='text-align:center;margin:auto;'&gt;&lt;b&gt;Cog:&lt;/b&gt; "+value.type+"&lt;/h3&gt;&lt;br style='font-size:1px;'&gt;&lt;h3 style='text-align:center;margin:auto;'&gt;&lt;b&gt;Progress:&lt;/b&gt; "+value.progress+"&lt;/h3&gt;");,但它无法正常工作(Sameer 答案中的代码)。你能帮帮我吗?
  • 是的,把你的Skype名字发给我
  • 我在 ajax 中更改代码添加 dataType:html
  • 谢谢,这很好用。没有讨厌的闪烁,我可以用我的 PHP 设置它的样式。耶!
  • 你可以这样做,但绝对不是一个好习惯,当你可以在客户端 Javascript 中完成所有事情时,为什么要使用服务器端 PHP 并导致服务器负载。检查我的小提琴叉。
猜你喜欢
  • 2011-03-15
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
  • 2011-05-06
  • 2018-05-06
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多