使用带有href的ajax打开动态php页面而不刷新页面

时间:2017-02-14 23:46:27

标签: javascript php jquery ajax

现在我的问题很简单,在堆栈溢出站点没有看到任何sooting。我如何用Ajax打开一个动态的PHP页面,如果Ajax失败,那么通常就像google一样打开页面。如果他们的搜索失败让我们想象他们使用Ajax他们自动运行页面我如何通过Href链接 没有页面刷新,如果它正常加载失败,请帮助我卡住。没有重复没有看到任何答案请帮助我卡住..

    example
   <a href="onelink.php" >Open me</a>

           //current page onelink.php

1 个答案:

答案 0 :(得分:1)

我会给你一个简短的答案,因为我已经在这个网站上看到了一些非常好的答案,如果你继续搜索你列出的标签,特别是jquery ajax那么我肯定你得到了你需要的东西。 http://api.jquery.com/jquery.ajax/的jquery.ajax()页面可能是一个很好的起点。如果你想真正理解这一点,你将不得不做一些学习。那里说的是我的一些旧代码。

这是对从客户端发送到服务器上的php文件的某些信息的ajax请求。页面是动态生成的还是真实的并不重要,只要它能够响应请求的URL。

function logrequest()
    {
            $.ajax({
               url: siteURL + '/custom/log/requestlog.php',
               type: 'GET',
               data: $.param({ip: customer_ip}),
               dataType: 'json',
               success: function(data){
                     if(data.count!=null)
                     {
                            requests=data.count;
                     }
               }
        });
    }

以下是来自php文件名requestlog.php的响应。

<?php
$ip=$_GET['ip'];
$ip_passS=file_get_contents('http://www...passthru.txt');
$ip_passA=split(',',$ip_passS);
$ip_cnt=0;
$d=gmdate("ymd");
$RQLog=$_SERVER['DOCUMENT_ROOT'].'/custom/log/requests/RQLog'.$d.'.txt';
$fp=fopen($RQLog,"a");
$s=gmdate("H:i:s").", ".$ip."\r\n";
fwrite($fp,$s);
fclose($fp);
$ip_requests=file_get_contents('http://www.../custom/log/requests/RQLog'.$d.'.txt');
$ip_cnt=substr_count($ip_requests,$ip);
header('Content-Type: text/json');
if(!in_array($ip,$ip_passA))
{
    $response = array('count'=>$ip_cnt);
    echo json_encode($response);
}
else  //if your in the passthru, you get a free lunch
{
    $response = array('count'=>0);
    echo json_encode($response);
}
?>

因此,ajax从PHP文件请求数据,服务器上的文件通过以json格式回送数据来响应。在某些情况下,根据请求的去向,您可能永远不会收到回复。就像您处理网站可以将地址转换为GPS坐标一样。如果他们忙碌而你的低优先级,你可能永远不会得到回复,但你的代码可以快乐地进行。如果你继续生成太多这些请求,但是你可能遇到一些限制,这些限制既是浏览器强加的,也是服务器强加的,所以你需要了解你在做什么。

但这是简短的回答。

以这种方式做某事的价值在于,如果网站上的一小部分屏幕没有立即响应,您可以继续加载页面并且数据将是在它返回时提供。

此代码的详细信息并不重要。问题是“你如何用ajax打开一个php页面(动态或其他)。答案是将正确的url传递给ajax请求,页面通过回显它返回它的数据。它可能是点击按钮或DOM加载后的文档就绪事件。这可能是很多事情。你必须决定你想要的是什么。顺便说一句,调试这种代码可能非常困难,所以请耐心等待。

问题的其余部分

所以我没有回答的问题部分是如果服务器上的页面未打开没有发送回复该怎么办? 。所以一个问题可能是页面打开并运行但没有发回您预期的响应,或者在响应期间可能存在未被捕获的错误。我发现这些情况通常很难解决,所以有时我会设置响应日志并记录成功和失败例程的所有响应(如果它们都存在)。通过这种方式,我可以确定如何改进代码。您还可以将错误对象传递给您的javascript例程,并根据您获得的错误类型(假设您记录它们),您可能能够获得对问题的一些洞察。但简短的回答是修复代码或找出发出另一个请求的方法。如果您在客户端和服务器端编写,您可以使用try / catch来查看是否可以捕获问题。如果你没有创作服务器端,那么尽可能多地阅读他们的API或接口,并注意返回的错误。

所以大多数时候我发现其他人的公共访问界面确实会回复我,但我必须知道如何倾听。当我编写服务器端代码时,我几乎总是试图保持简单,因为我不经常期望在这些情况下获得太多流量,如果我预计会有大量流量,我通常会选择商用解决方案(即真正了解他们正在做什么的人)。