【问题标题】:Load contents of alexa php results with parameters into html page - Maybe using jquery or ajax将带有参数的alexa php结果的内容加载到html页面中-也许使用jquery或ajax
【发布时间】:2016-03-08 12:15:42
【问题描述】:

我正在尝试将网站的 Alexa 排名作为一段文本加载到标准 html 文件中。我想避免将整个页面设置为 php,所以我创建了一个名为 rank.php 的 php 文件

<?php
$url=$_GET["url"];
$xml = simplexml_load_file('http://data.alexa.com/data?cli=10&dat=snbamz&url='.$url);
$rank=isset($xml->SD[1]->POPULARITY)?$xml->SD[1]->POPULARITY->attributes()->TEXT:0;
echo $rank;
?>

我可以将它加载到我的服务器并使用 rank.php?url=google.com 之类的名称调用它

这会在屏幕上返回一个数字(在本例中为 1)。那么如何将该数字放入 html 文档中的普通 &lt;p&gt; 标记中。

&lt;p&gt;Alex rank: &lt;/p&gt;

我正在研究 jquery 并使用 get 方法,但我迷路了。

例如把它放在&lt;head&gt;&lt;/head&gt; 标签中

<script>
$(document).ready(function(){
$("#div1").load("code/rank.php?url=google.com");
});
</script>

然后在我的html页面中添加

&lt;p&gt;Alex rank: &lt;div id="div1"&gt;&lt;/div&gt;&lt;/p&gt;

对我不起作用。

我还尝试在&lt;p&gt;&lt;/p&gt; 标记中添加以下脚本。

 <script type="text/javascript">
       function showGetResult( name )
{
 jQuery.ajax({
    url: 'code/rank.php?url=google.com',
    type: 'get',
    dataType: 'text/html',
    success:function(data)
    {
        alert(data);
        document.write(data);
        } 
     });
}

showGetResult('test');
</script>

我只想要一个简单的解决方案来解决这个数字。

非常感谢任何帮助。

【问题讨论】:

    标签: php jquery ajax api alexa


    【解决方案1】:
     jQuery.ajax({
        url: 'code/rank.php?url=google.com',
        type: 'get',
        dataType: 'text/html',
        success:function(data)
        {
            alert(data);
            document.write(data);
            } 
     });
    

    我做了一些测试 - 似乎这是罪魁祸首: 数据类型:'text/html'

    为什么: 在 jQuery 文档中 - http://api.jquery.com/jQuery.ajax/

    dataType 允许的值:

    • “xml”

    • “html”

    • “json”

    • “jsonp”

    • “文字”

    • 多个以空格分隔的值

    我试过了 数据类型:'文本'

    为我工作。

    一定要把你的脚本标签放在

    之后

    如果你在页面内执行它

    <p>Alexa rank: <span id="div-1"></span></p>
    
    <script>
     jQuery.ajax({
        url: 'code/rank.php?url=google.com',
        type: 'get',
        dataType: 'text',
        cache: false,
        success: function(data)
        {
            alert(data);
    
            // comment: $('#div-1').html(data)
            // inserts data inside $('#div-1')
            $('#div-1').html(data);
        } 
     });
    </script>
    

    但更清洁的方法:

    <html>
    <head>
       <script>
    
       // comment:
       //     in jQuery
       //         $( yourFunction )
       //     is a shortcut for
       //         $(document).ready( yourFunction )
       $(function(){
          jQuery.ajax({
              url: 'code/rank.php?url=google.com',
              type: 'get',
              dataType: 'text',
              cache: false,
              success: function(data)
              {
                  alert(data);
    
                  // comment: $('#div-1').html(data)
                  // inserts data inside $('#div-1')
                  $('#div-1').html(data);
              } 
           });
       });
       </script>
    </head>
    <body>
       <p>Alexa rank: <span id="div-1"></span></p>
    </body>
    </html>
    

    在最后的代码中,我使用了 cache: false,因为我觉得这对这种情况有好处。我正在使用 dataType: 'text' 因为您只需要一个数字 - 那为什么不呢?它对我来说只是更多的亲吻。也许它适用于 'html'

    顺便说一句 - 可能有另一个地方可以隐藏另一个错误: 代码/rank.php?url=google.com

    如果您当前的网址是 www.example.com/somefolder/ 那么它将被解释为 www.example.com**/somefolder/**code/rank.php?url=google.com

    如果您当前的网址是 www.example.com/somefolder/another/ 那么它将被解释为 www.example.com**/somefolder/another/**code/rank.php?url=google.com

    我的建议 - 您始终可以使用 Firefox 或 Google Chrome 开发者工具 > 网络查看返回您的 ajax 请求的内容 - '1' 或 'PAGE 404 NOT FOUND' ^_^ jQuery.ajax({ url: 'code/rank.php?url=google.com', 类型:'得到', 数据类型:'文本/html', 成功:功能(数据) { 警报(数据); 文档.写(数据); } });

    我做了一些测试 - 似乎这是罪魁祸首: 数据类型:'text/html'

    为什么: 在 jQuery 文档中 - http://api.jquery.com/jQuery.ajax/

    dataType 允许的值:

    • “xml”

    • “html”

    • “json”

    • “jsonp”

    • “文字”

    • 多个以空格分隔的值

    我试过了 数据类型:'文本'

    为我工作。

    一定要把你的脚本标签放在

    之后

    如果你在页面内执行它

    <p>Alexa rank: <span id="div-1"></span></p>
    
    <script>
     jQuery.ajax({
        url: 'code/rank.php?url=google.com',
        type: 'get',
        dataType: 'text',
        cache: false,
        success: function(data)
        {
            alert(data);
    
            // comment: $('#div-1').html(data)
            // inserts data inside $('#div-1')
            $('#div-1').html(data);
        } 
     });
    </script>
    

    但更清洁的方法:

    <html>
    <head>
       <script>
    
       // comment:
       //     in jQuery
       //         $( yourFunction )
       //     is a shortcut for
       //         $(document).ready( yourFunction )
       $(function(){
          jQuery.ajax({
              url: 'code/rank.php?url=google.com',
              type: 'get',
              dataType: 'text',
              cache: false,
              success: function(data)
              {
                  alert(data);
    
                  // comment: $('#div-1').html(data)
                  // inserts data inside $('#div-1')
                  $('#div-1').html(data);
              } 
           });
       });
       </script>
    </head>
    <body>
       <p>Alexa rank: <span id="div-1"></span></p>
    </body>
    </html>
    

    在最后的代码中,我使用了 cache: false,因为我觉得这对这种情况有好处。我正在使用 dataType: 'text' 因为您只需要一个数字 - 那为什么不呢?它对我来说只是更多的亲吻。也许它适用于 'html'

    顺便说一句 - 可能有另一个地方可以隐藏另一个错误: 代码/rank.php?url=google.com

    如果您当前的网址是 www.example.com/somefolder/ 那么它将被解释为 www.example.com**/somefolder/**code/rank.php?url=google.com

    如果您当前的网址是 www.example.com/somefolder/another/ 那么它将被解释为 www.example.com**/somefolder/another/**code/rank.php?url=google.com

    我的建议 - 您始终可以使用 Firefox 或 Google Chrome 开发者工具 > 网络查看返回您的 ajax 请求的内容 - '1' 或 'PAGE 404 NOT FOUND' ^_^

    回复评论:

    是的,您的主旨是正确的。 这是实现它的一种方法 (这对我的思维和组织代码的方式来说会很舒服):

    <html>
    <head>
        <script>
        // defining tool:
        function updateRankForSite( inUrl, $inInsertTo ) {
            $.ajax({
                url: 'code/rank.php?url=' + inUrl,
                type: 'get',
                dataType: 'text',
                cache: false,
                success: function(data)
                {
                    alert(data);
                    $inInsertTo.html(data);
                } 
            });
        }
        </script>
        <script>
    
        // using tool:
        $(function(){
            outputRankForSite( 'google.com', $('#rank-google') );
            outputRankForSite( 'yandex.com', $('#rank-yandex') );
    
            // and here is example how to interact with user
            $('button-1').click( function( event ) {
    
                // comment
                // event.preventDefault() blocks default behavior
                // for clicking on <a href="...">...</a> tag
                // that means you wouldn'd be redirected to href
                event.preventDefault();
                outputRankForSite(
                    'stackoverflow.com',
                    $('#rank-stackoverflow')
                );
    
                // comment:
                // and you can leverage not just 'stackoverflow.com'
                // but anything that user wants - he can
                // put his request to <input="text" id="example-input" ...>
                // and you could collect his input by using command like
                // $('#example-input').val()
            });
        });
        </script>
    </head>
    <body>
        <p>Alexa rank for google.com: <span id="rank-google"></span></p>
        <p>Alexa rank for yandex.com: <span id="rank-yandex"></span></p>
        <p>
            Alexa rank for stackoverflow.com (press button to get rank):
            <span id="rank-stackoverflow"></span>
        </p>
        <a href="#" id="button-1">Press this button to update rank</a>
    </body>
    </html>
    

    【讨论】:

    • 非常感谢。我可能在那里遇到了一些错误,但开发者工具 > 网络让我走上了正确的轨道。我正在重新设计我的实时站点,并且不想将任何内容加载到服务器上,但我必须让 php 方面正常工作。我有一个 jQuery 的本地副本,并且像一个白痴一样,我没有将它加载到服务器上。现在一切正常,谢谢。
    • 我有一个后续问题。有没有办法通过将值传递给函数来扩展到任何 url。就像是。 &lt;script&gt; $(function(arg){ jQuery.ajax({ url: 'code/rank.php?url='+arg.url, type: 'get', dataType: 'text', cache: false, success: function(data) { // comment: $('#div-1').html(data) // inserts data inside $('#div-1') $('#arg.div').html(data); } }); }); &lt;/script&gt;
    • 我在答案中添加了“回答评论:”。
    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 2011-06-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 2023-03-15
    • 2011-06-17
    • 1970-01-01
    相关资源
    最近更新 更多