Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AJAX从PHP文件获取JSON可以与localhost一起使用,但不能与外部服务器(000webhost)一起使用?_Php_Mysql_Ajax_Json - Fatal编程技术网

使用AJAX从PHP文件获取JSON可以与localhost一起使用,但不能与外部服务器(000webhost)一起使用?

使用AJAX从PHP文件获取JSON可以与localhost一起使用,但不能与外部服务器(000webhost)一起使用?,php,mysql,ajax,json,Php,Mysql,Ajax,Json,对在PHP和MYSQL中使用AJAX和JSON完全陌生。我的代码使用localhost,但从Webhost上的PHP文件中不返回任何内容。我只是想知道,对于外部服务器,我是否遗漏了一些重要的代码,或者是因为WebHost本身的原因,我是否必须添加额外的代码(尽管我不认为是这样)。以下是我的一个PHP文件的代码: <?php include 'dbconfig.php'; $con = mysql_connect($dbhost,$dbuser,$dbpass); $dbs = mysq

对在PHP和MYSQL中使用AJAX和JSON完全陌生。我的代码使用localhost,但从Webhost上的PHP文件中不返回任何内容。我只是想知道,对于外部服务器,我是否遗漏了一些重要的代码,或者是因为WebHost本身的原因,我是否必须添加额外的代码(尽管我不认为是这样)。以下是我的一个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>"); 
                            }
                          } 
                        });
$.ajax({
网址:'http://appname.net/PHP/getDesserts.php',
数据:“数据”,
数据类型:“json”,
成功:函数(行)
{
用于(行中的变量i)
{
变量行=行[i];
var startname=行[1];
var startprice=第[2]行;
var startpagelink=第[4]行;
$(“#主要内容”)。追加(”);
}
} 
});
正如我所说,这段代码适用于localhost,但当我将php文件移动到服务器并更改url以适应此问题时,我才开始遇到此问题。任何帮助都将不胜感激。

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

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

客户端脚本是这样的

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

您仍然在从localhost打开HTML吗?如果是这样,由于XSS的原因,您不能使用标准AJAX。您还需要从Web服务器提供HTML。您不能使用AJAX方法从其他域获取数据。您应该添加错误处理程序或检查控制台是否有错误。唯一的问题是HTML将在PhoneGap应用程序中使用阳离子,所以我不能把HTML放在同一台服务器上…任何建议(如果有)关于我如何解决这个问题?感谢您的回复,我刚刚尝试了一下,但数据库仍然没有返回任何内容。您确定请求正确吗?检查您的web服务器访问日志。启动wireshark/tcpdump会话。如果打开web浏览器并转到
http://appname.net/PHP/getDesserts.php?callback=foo
?因为这是一个免费的托管服务,我想我无法访问服务器日志。我还需要弄清楚如何使用wireshark/tcpdump。在那里尝试了?回调,这是我得到的回报:foo([[“1”,“奶酪农夫三明治”,“3.45”,“是”,“lentl.html”,“0”],[“2”,“油炸蒜蘑菇”,“4.00”,”“否”、“musts.html”、“0”]、[“3”、“Nachos”、“4.50”、“否”、“Nachos.html”、“0”]);这是一个好迹象。看起来您正在返回您应该返回的内容,我不确定您的ajax失败的原因。您确定javascript控制台中没有显示错误吗?
$.ajax({                                      
   url: 'http://appname.net/PHP/getDesserts.php',
   dataType: 'jsonp',