Ajax 调用未返回

Posted

技术标签:

【中文标题】Ajax 调用未返回【英文标题】:Ajax call not being returned 【发布时间】:2013-10-16 20:06:52 【问题描述】:

问题是 php 文件没有发回数据或 JS 文件没有捕获数据。

确切的问题是数据没有显示在<div> 内的index.php 页面上。 我在 getDetails.php 文件中包含了代码来记录它在做什么。它让我可以看到查询正在运行并正在返回数据。

我过去使用过与此类似的代码,没有任何问题。唯一的区别是前面的代码是使用 mysql 的。此代码正在处理 Access 数据库。我不知道我是否需要对 json_encode 做一些特殊的事情来处理 Access 数据。

我在 java.js 的开头使用了alert() 来确保调用了 java 代码。这是。 details = result 命令之后的警报永远不会被调用。

索引.PHP:

<!doctype html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/plain; charset=UTF-8"/>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
        <script src="java.js" type="text/javascript"></script>
    </head>
    <body>
        <div id="reportDetails" class="reportDetails" align=center></div>
    </body>
<html>

JAVA.JS:

jQuery(document).ready(function () 
    var ra='7100913063';
    $.ajax(
        type: 'POST',
        url: 'getDetails.php',
        data: 'value=' + ra,
        dataType: 'json',
        cache: false,
        success: function(result) 
            details = result;
            $("#reportDetails").text("");
            for (var i = 0; i < details.length; i++) 
                $("#reportDetails").append("<tr class='bottom'><td width=200 align=center class='bottom'>" + details[i][0] + "</td><td width=200 align=center class='bottom'>" + details[i][1] + "</td><td width=200 align=center  class='bottom'> " + details[i][2] +"</td></td><td width=200 align=center  class='bottom'> " + details[i][3] +"</td></td></tr>");
            
            $("#reportDetails").append("</table>");
        ,
    );
);

getDetails.php

<?php
include("../../scripts/adodb/adodb.inc.php");

$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");

$ra = $_POST['value'];
set_time_limit(0);
date_default_timezone_set('America/Chicago');                                       
$counter = 0;

$connect = odbc_connect("Driver=Microsoft Access Driver (*.mdb);Dbq=//server/directory/database.mdb", '', '');
$query = "SELECT distinct ra, MIN(received) as startDate, MAX(completion) AS stopDate, MAX(status) as stat FROM cont WHERE ra = '" . $ra . "' GROUP BY ra";
$result = odbc_exec($connect,$query);

while(odbc_fetch_row($result))
    $radetails[0] = odbc_result($result,"ra");
    fwrite($fh, $radetails[0]);
    $radetails[1] = odbc_result($result,"startDate");
    fwrite($fh, $radetails[1]);
    $radetails[2] = odbc_result($result,"stopDate");
    fwrite($fh, $radetails[2]);
    $radetails[3] = odbc_result($result,"stat");
    fwrite($fh, $radetails[3]);

fclose($fh);
echo json_encode($radetails);
?>

【问题讨论】:

如何在其中抛出一个 ajax 故障处理程序,看看是否/什么回来了?此外,您是否尝试过调试“java.js”并查看“成功”时会发生什么 - 如果它甚至执行?控制台日志中有什么内容? 很可能你的 php 没有返回 json。 您是否在浏览器控制台中查找过错误?这应该可以准确地告诉您问题出在哪里。 Firebug 告诉您正在发送和返回什么?盲调试 AJAX 没用 如果您使用的是 Firefox,请尝试使用 Firebug。查看控制台选项卡,然后单击 ...[url]...getDetails.php,最后单击 Response 选项卡。这将显示返回的内容。 【参考方案1】:

我的 getDetails.php 中有 "echo &lt;br/&gt;" 行。删除了该行,它现在可以工作了。

【讨论】:

以上是关于Ajax 调用未返回的主要内容,如果未能解决你的问题,请参考以下文章

从 jquery ajax 调用分配变量返回未定义

Ajax 调用未返回

Ajax 调用总是以未定义的形式返回并且没有到达后面的代码

来自 .ajax() 调用的数据的 jQuery .find() 返回未定义

Struts 2 操作未将所需结果返回给 Jquery Ajax 调用

extjs ajax调用存储未加载