使用AJAX从PHP文件中获取JSON适用于本地主机,但不适用于外部服务器(000webhost)


Getting JSON from a PHP file using AJAX works with localhost, but not with external server (000webhost)?

对PHP和MYSQL使用AJAX和JSON完全陌生。我的代码与localhost工作,但从000webhost上的PHP文件没有返回任何东西。只是想知道是否有任何必要的代码,我错过了这里的外部服务器,或者我是否必须添加额外的代码,因为000webhost本身(虽然我不认为这是情况)。下面是我的一个PHP文件的代码:

<?php
include 'dbconfig.php';
$con = mysql_connect($dbhost,$dbuser,$dbpass);
$dbs = mysql_select_db($dbname, $con);
$result = mysql_query("SELECT * FROM `desserts`");
$data = array();
while ( $row = mysql_fetch_row($result) )
{
  $data[] = $row;
}
echo json_encode( $data );
?>

(这只是一个测试文件,所以我不担心sql注入或类似的任何东西)

下面是检索数据的JavaScript代码:

$.ajax({                                      
                          url: 'http://appname.net/PHP/getDesserts.php',
                          data: "data",            
                          dataType: 'json',             
                          success: function(rows) 
                          {
                              for(var i in rows)
                              {
                                    var row = rows[i];
                                    var startname = row[1];
                                    var startprice = row[2];
                                    var startpagelink = row[4];
                                    $('#main_content').append('<b><a href="'+startpagelink+'">'+'<img id="sammich" src="sammich.jpg">'+'</br>'+startname+'</br><font color="400000">£'+startprice)
                                    .append("</font><hr /></a></b>"); 
                            }
                          } 
                        });

正如我所说的,这段代码与本地主机一起工作,但是当我将php文件移动到服务器并更改url以适应时,我开始得到这个问题。

使用JSONP,这是一种从不同域的服务器请求数据的方法。

像这样更新后端脚本。(你可能还应该添加一些东西来验证$_GET['callback']是一个有效的javascript函数名)。

echo $_GET['callback'].'('.json_encode($data).');';

客户端脚本如下:

$.ajax({                                      
   url: 'http://appname.net/PHP/getDesserts.php',
   dataType: 'jsonp',
相关文章: