通过AJAX获得奇怪的结果

时间:2012-09-13 20:17:22

标签: php javascript jquery ajax database

相关:Query Database through Javascript / PHP

这个问题与我的上述问题有关。我将PHP脚本修复为我的一个答案中提到的那个;我试图使用$.getJSON无济于事。所以我坚持使用我从服务器获取响应的原始方法:

function getDatabaseRows()
{           
    var xmlHttp = new XMLHttpRequest();

    xmlHttp.onreadystatechange = function()
    {
        if(xmlHttp.readyState == 4)
        {
          alert(xmlHttp.responseText);
        }
    }

    xmlHttp.open("POST", "myDomain.com/subDirectory/getRowCounts.php", true);
    xmlHttp.send(null);
}

当警报运行时,它就像是一个文本文件,并获取我的PHP脚本的全部内容。它不运行脚本,它只是从服务器上获取它的文本副本。我的脚本(在前面的问题中链接)是:

$rowCounts = array();

$dbhost = 'host';
$dbuser = 'host';
$dbpass = 'host';
$dbase  = 'host';

$fields = array(
    'MaxTID' => array('tab' => 'TransData',      'col' => 'TID'),
    'MaxSID' => array('tab' => 'FullData',       'col' => 'SID'),
    'MaxFID' => array('tab' => 'SalamanderData', 'col' => 'FID'),
    'MaxOID' => array('tab' => 'OthersData',     'col' => 'OID')
  );

$con = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');
mysql_select_db($dbase, $con) or die(mysql_error());

foreach ($fields as $id => $info) {
  $sql = "SELECT MAX({$info['col']}) FROM {$info['tab']}";
  $result = mysql_query($sql, $con);
  if (!$result) die('Could not query:' . mysql_error());
  $rowCounts[$id] = mysql_result($result, 0);
    }

echo json_encode($rowCounts);

mysql_close($con);

有关为什么我的AJAX脚本在服务器上返回PHP脚本的文本副本的任何线索;而不是我要找的JSON结果?

编辑:

将浏览器指向PHP脚本返回:

{"MaxTID":"1","MaxFID":null,"MaxSID":"3","MaxOID":"1"}

3 个答案:

答案 0 :(得分:0)

$。getJSON是jQuery,因此您需要将其包含在您的页面中:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script>
$.getJSON('http://myDomain.com/subDirectory/getRowCounts.php', function(response) {
    console.log(response);
});
</script>

答案 1 :(得分:0)

Javascript将拉下http服务器提供的任何内容。因此,如果没有正确配置http服务器来处理服务器端脚本I.E. php,然后你将从运行php脚本获取文件的内容而不是处理过的html输出。联系您的服务器管理员以解决问题,并确认您在文件上使用.php扩展名,而不是.txt。

答案 2 :(得分:0)

找到了解决方案。

问题在于我正在研究network share drive ....这也恰好生活在web server上。

所以每当我去测试脚本时,它都会像我这样获取文件:

file:////mySubDomain.myDomain.com/getRowCounts.php ...显然无法正常工作,因为服务器没有提供服务。

通过将file:////更改为http://

来解决问题