Php 在我的速率计算器中,我的AJAX操作会导致一个白色屏幕

Php 在我的速率计算器中,我的AJAX操作会导致一个白色屏幕,php,jquery,google-maps-api-3,Php,Jquery,Google Maps Api 3,在我的距离/速率计算器中(对于距离,我使用谷歌地图),我实现了AJAX,并且得到了错误的白色屏幕 <? session_start(); ob_start(); require_once("patch/require.php"); function curl_request($sURL,$sQueryString=null) { $cURL=curl_init(); curl_setopt($cURL,CURLOPT_URL,$sURL.'?'.$sQueryString)

在我的距离/速率计算器中(对于距离,我使用谷歌地图),我实现了AJAX,并且得到了错误的白色屏幕

<?
session_start();
ob_start();
require_once("patch/require.php");
function curl_request($sURL,$sQueryString=null)
{
    $cURL=curl_init();
    curl_setopt($cURL,CURLOPT_URL,$sURL.'?'.$sQueryString);
    curl_setopt($cURL,CURLOPT_RETURNTRANSFER, TRUE);
    $cResponse=trim(curl_exec($cURL));
    curl_close($cURL);
    return $cResponse;
}
if(isset($_POST))
{
$dest= str_replace(',','',str_replace(' ','+',trim($_POST['to'])));
$origin =str_replace(',','',str_replace(' ','+',trim($_POST['from']))); 
$sResponse=curl_request('http://maps.googleapis.com/maps/api/distancematrix/json','origins='.$origin.'&destinations='.$dest.'&mode=driving&units=metric&sensor=false');
$oJSON=json_decode($sResponse);
if ($oJSON->status=='OK')
    $fDistanceInKM=(float)preg_replace('/[^\d\.]/','',$oJSON->rows[0]->elements[0]->distance->text);
else
    $fDistanceInKM=0;
      $oJSON->destination_addresses[0];
      $oJSON->origin_addresses[0];
    if(!isset($_SESSION['getTravel']))
    {
        $_SESSION['getTravel']=time();
    }
    $session_id=$_SESSION['getTravel'];
    $origin=mysql_real_escape_string($oJSON->origin_addresses[0]);
    $destination=mysql_real_escape_string($oJSON->destination_addresses[0]);
    $distance=mysql_real_escape_string($fDistanceInKM.PHP_EOL);
    $increase=(int)$_POST['inc'];
    $checkQ=mysql_query("select * from temp_travel where `session_id`='$session_id'")or die(mysql_error());
    $cms_distance_lower=number_format(Functions::getConf(3113),2);
    $cms_distance_upper=number_format(Functions::getConf(3116),2);
    $cms_lower_price=number_format(Functions::getConf(3111),2);
    $cms_between_price=number_format(Functions::getConf(3112),2);
    $cms_upper_price=number_format(Functions::getConf(3117),2);
    $cms_bag_price=number_format(Functions::getConf(3114),2);
    $cms_handcarry_price=number_format(Functions::getConf(3115),2);
    $distance=(int)$distance;
    if($distance<=$cms_distance_lower)
    {
        $pr=$cms_lower_price;
    }
    else if($distance>$cms_distance_lower && $distance<=$cms_distance_upper)
    {
        $pr=$cms_between_price;
    }
    else
    {
        $pr=$distance*$cms_upper_price;
    }

    if(mysql_num_rows($checkQ)>0)
    {
        $check=mysql_fetch_array($checkQ);
        $check_id=(int)$check['Id'];
        $passenger=$check['passenger'];
        if($passenger<4)
    {
        $hd=3;
        $bg=3;
    }
    else 
    {
        $pr+=($passenger-3)*8;
        if($passenger<6 )
        {
            $hd=3;
        }
        else
        {
            $hd=$passenger-2;
        }
        $bg=$passenger;
    }
        $handcarry=$check['handcarry'];
        $baggage=$check['baggage'];
        $price=number_format($pr+($cms_handcarry_price*($handcarry))+($cms_bag_price*($baggage))+$check['increase'],2);
        mysql_query("update temp_travel set `origin`='$origin',`destination`='$destination',`distance`='$distance',`increase`='$increase',`price`='$price' where `Id`='$check_id'")or die(mysql_error());
    }
    else
    {
        $price=number_format(($pr+$increase),2);
        mysql_query("insert into temp_travel (`session_id`,`origin`,`destination`,`distance`,`increase`,`price`,`handcarry`,`baggage`) values ('$session_id','$origin','$destination','$distance','$increase','$price','','')")or die(mysql_error());
    }

}           
        include('infotable.php');
?>
下面是infotable.php文件:

<?
include("patch/require.php");
if(isset($_SESSION['getTravel']))
{
    $session_id=$_SESSION['getTravel'];
    $travel_infoQ=mysql_query("select * from temp_travel where `session_id`='$session_id'")or die(mysql_error());
    if(mysql_num_rows($travel_infoQ)>0)
    {
        $travel_info=mysql_fetch_array($travel_infoQ);
        $destination=stripslashes($travel_info['destination']);
        $origin=stripslashes($travel_info['origin']);
        $distance=stripslashes($travel_info['distance']);
        $passenger=stripslashes($travel_info['passenger']);
        $handcarry=stripslashes($travel_info['handcarry']);
        $baggage=stripslashes($travel_info['baggage']);
        $increase=stripslashes($travel_info['increase']);
        $cms_distance_lower=Functions::getConf(3113);
        $cms_distance_upper=Functions::getConf(3116);
        $cms_lower_price=Functions::getConf(3111);
        $cms_between_price=Functions::getConf(3112);
        $cms_upper_price=Functions::getConf(3117);
        $cms_bag_price=Functions::getConf(3114);
        $cms_handcarry_price=Functions::getConf(3115);
        $distance=(int)$distance;
        if($distance<=$cms_distance_lower)
        {
            $pr=$cms_lower_price;
        }
        else if($distance>$cms_distance_lower && $distance<=$cms_distance_upper)
        {
            $pr=$cms_between_price;
        }
        else
        {
            $pr=$distance*$cms_upper_price;
        }


        if($passenger<4)
        {
            $hd=3;
            $bg=3;
        }
        else 
        {
            $pr+=($passenger-3)*8;
            if($passenger<6 )
            {
                $hd=3;
            }
            else
            {
                $hd=$passenger-2;
            }
            $bg=$passenger;
        }   
        $price=$pr+$cms_handcarry_price*($handcarry)+$cms_bag_price*($baggage)+$increase;
        mysql_query("update temp_travel set `price`='$price' where `session_id`='$session_id'");
    }
}
?>
<table border="0" width="100%" cellpadding="0" style="margin:0px; padding:0px;"   cellspacing="0">
    <tr>
        <td class="td" valign="top" width="35%" ><strong>From :</strong></td>
        <td class="td" valign="top"><? echo $destination; ?></td>
    </tr>
    <tr>
        <td class="td" valign="top"><strong>To :</strong> </td>
        <td class="td" valign="top"><? echo $origin; ?></td>
    </tr>
    <tr>
        <td class="td" valign="top"><strong>Passengers :</strong> </td>
        <td class="td" valign="top"><div id="passenger"><? echo $passenger; ?></div></td>
    </tr>
    <tr>
        <td class="td" colspan="2" style="text-align:center; background:#ffffff;" valign="top"><strong>Number of Baggages</strong> </td>

    </tr>
    <tr>
        <td class="td" valign="top"><strong>Large Baggages :</strong> </td>
        <td class="td" valign="top"><? if(!empty($baggage)){ echo '<div id="luggage2">'.$bg.'</div> <div id="baggage"> + '. $baggage.'</div>'; }else { echo $bg; } ?></td>
    </tr>
    <tr>
        <td class="td" valign="top"><strong>Hand Carries :</strong> </td>
        <td class="td" valign="top"><? if(!empty($handcarry)){ echo '<div id="luggage1">'.$hd.'</div> + <div id="baggage">'. $handcarry.'</div>';}else { echo $hd; } ?></td>
    </tr>       
    <tr>
        <td class="td" style="text-align:center" colspan="2"><strong >Price : $<div id="price"><? echo $price ?></div></strong></td>
    </tr>
    <tr>
        <td class="td" colspan="2" style="text-align:center;" align="center"><button id="button" onclick="document.location='<?=_WEB_URL?>bookingform.php'">Book Now</button></td>
    </tr>
</table>

您遇到了几个问题。直接的错误是,当您键入邮政编码“123”并单击“刷新”时,AJAX操作将启动,但您没有阻止事件冒泡进入默认操作,即将表单提交到另一个页面。因此,AJAX操作经常(但不总是)终止,因为它的父页面正在被重新加载——这取决于先加载哪个页面。(如果事件处理程序中存在JavaScript错误,也可能发生这种情况)

单击单选按钮也会出现JS错误。您正在使用开发者工具栏吗?Safari和Chrome都有一个本地版本,Firefox有一个优秀的Firebug插件。这是AJAX调试工具包的一个重要部分,应该在屏幕上显示所有类似的内容


我注意到,如果在AJAX请求之外查看,您的AJAX URL(和)会呈现整个页面。这使得单独测试变得更加困难——您应该能够在单独的浏览器窗口中加载这些内容并获得JSON答案。最后,除非POST op更改了服务器上的某些内容,否则这也应该是一个GET操作。

我已经对问题进行了一些编辑。……你可以看到我的控制台我记录了响应的结果,而这不是从infotable.php提交的,因为它应该来自该文件ha-ha,你会为此而自责的!我应该早就发现了。这并不是说点击会进入默认的提交操作;事实上,您的按钮具有以下属性:
onclick=“document.location=”http://www.airporttaxibooking.ca/?hamilton“;”
。删除它,只需在jQuery中附加一个click处理程序:
$('button')。单击(function(){…})。你当然不想重定向——我猜你应该在这一点上开始一个AJAX操作(当然只有你知道它要做什么).对,我知道了,但问题是当我在邮政编码中写入一些内容时,然后在启动onBlur函数之后,返回的数据不是来自infotable…此时我没有启动click=“document.location=”;“Event。这个错误是否对我的代码造成了任何问题(无法发送响应:对于每个文档,每个chrome.extension.onRequest侦听器不能发送一次以上的响应(消息由扩展名gighmmpiobklfepjocnamgkbiglidom发送)。感谢您的回复。如果我在postal字段中键入'123',然后跳出tab,它会启动一个AJAX操作到'test.php',然后再次执行另一个立即重定向。我会首先修复这个问题,以及我提到的不正确的
onclick
(jQuery中根本不需要内联JS事件-删除所有事件!)。
<?
include("patch/require.php");
if(isset($_SESSION['getTravel']))
{
    $session_id=$_SESSION['getTravel'];
    $travel_infoQ=mysql_query("select * from temp_travel where `session_id`='$session_id'")or die(mysql_error());
    if(mysql_num_rows($travel_infoQ)>0)
    {
        $travel_info=mysql_fetch_array($travel_infoQ);
        $destination=stripslashes($travel_info['destination']);
        $origin=stripslashes($travel_info['origin']);
        $distance=stripslashes($travel_info['distance']);
        $passenger=stripslashes($travel_info['passenger']);
        $handcarry=stripslashes($travel_info['handcarry']);
        $baggage=stripslashes($travel_info['baggage']);
        $increase=stripslashes($travel_info['increase']);
        $cms_distance_lower=Functions::getConf(3113);
        $cms_distance_upper=Functions::getConf(3116);
        $cms_lower_price=Functions::getConf(3111);
        $cms_between_price=Functions::getConf(3112);
        $cms_upper_price=Functions::getConf(3117);
        $cms_bag_price=Functions::getConf(3114);
        $cms_handcarry_price=Functions::getConf(3115);
        $distance=(int)$distance;
        if($distance<=$cms_distance_lower)
        {
            $pr=$cms_lower_price;
        }
        else if($distance>$cms_distance_lower && $distance<=$cms_distance_upper)
        {
            $pr=$cms_between_price;
        }
        else
        {
            $pr=$distance*$cms_upper_price;
        }


        if($passenger<4)
        {
            $hd=3;
            $bg=3;
        }
        else 
        {
            $pr+=($passenger-3)*8;
            if($passenger<6 )
            {
                $hd=3;
            }
            else
            {
                $hd=$passenger-2;
            }
            $bg=$passenger;
        }   
        $price=$pr+$cms_handcarry_price*($handcarry)+$cms_bag_price*($baggage)+$increase;
        mysql_query("update temp_travel set `price`='$price' where `session_id`='$session_id'");
    }
}
?>
<table border="0" width="100%" cellpadding="0" style="margin:0px; padding:0px;"   cellspacing="0">
    <tr>
        <td class="td" valign="top" width="35%" ><strong>From :</strong></td>
        <td class="td" valign="top"><? echo $destination; ?></td>
    </tr>
    <tr>
        <td class="td" valign="top"><strong>To :</strong> </td>
        <td class="td" valign="top"><? echo $origin; ?></td>
    </tr>
    <tr>
        <td class="td" valign="top"><strong>Passengers :</strong> </td>
        <td class="td" valign="top"><div id="passenger"><? echo $passenger; ?></div></td>
    </tr>
    <tr>
        <td class="td" colspan="2" style="text-align:center; background:#ffffff;" valign="top"><strong>Number of Baggages</strong> </td>

    </tr>
    <tr>
        <td class="td" valign="top"><strong>Large Baggages :</strong> </td>
        <td class="td" valign="top"><? if(!empty($baggage)){ echo '<div id="luggage2">'.$bg.'</div> <div id="baggage"> + '. $baggage.'</div>'; }else { echo $bg; } ?></td>
    </tr>
    <tr>
        <td class="td" valign="top"><strong>Hand Carries :</strong> </td>
        <td class="td" valign="top"><? if(!empty($handcarry)){ echo '<div id="luggage1">'.$hd.'</div> + <div id="baggage">'. $handcarry.'</div>';}else { echo $hd; } ?></td>
    </tr>       
    <tr>
        <td class="td" style="text-align:center" colspan="2"><strong >Price : $<div id="price"><? echo $price ?></div></strong></td>
    </tr>
    <tr>
        <td class="td" colspan="2" style="text-align:center;" align="center"><button id="button" onclick="document.location='<?=_WEB_URL?>bookingform.php'">Book Now</button></td>
    </tr>
</table>