Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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
Javascript 简单的JSON代码不起作用_Javascript_Php_Json - Fatal编程技术网

Javascript 简单的JSON代码不起作用

Javascript 简单的JSON代码不起作用,javascript,php,json,Javascript,Php,Json,这段代码试图用值填充表单中的下拉列表。我已经分别测试了PHP,查询正常,这也就不足为奇了!。我有一个类似的表单,有3个相连的下拉列表,它们工作得完美无缺。在Mozilla中调试时,我注意到JSON的success函数没有执行。我不明白为什么 JavaScript PHP我跳过了数据库连接代码 $query = '(SELECT 1 AS sc, nume_judet FROM sa_Judet '; $query .= 'WHERE nume_judet <> "N/A" ) UNI

这段代码试图用值填充表单中的下拉列表。我已经分别测试了PHP,查询正常,这也就不足为奇了!。我有一个类似的表单,有3个相连的下拉列表,它们工作得完美无缺。在Mozilla中调试时,我注意到JSON的success函数没有执行。我不明白为什么

JavaScript

PHP我跳过了数据库连接代码

$query = '(SELECT 1 AS sc, nume_judet FROM sa_Judet ';
$query .= 'WHERE nume_judet <> "N/A" ) UNION ';
$query .= '(SELECT 2 AS sc, "N/A" FROM sa_Judet) '; 
$query .= 'ORDER BY sc, nume_judet';

//print $query;

$result = mysqli_query($db_conn, $query);

$judet = array();

if ($result == FALSE)
   {
   array_push($judet, 'QUERY_ERROR');
   goto _adr1;
   }

$rows = mysqli_num_rows($result);
if ($rows == 0)
   {
   array_push($judet, 'TBD_');
   goto _adr1;
   }

while ($row = mysqli_fetch_array($result))
      {
      array_push($judet, $row['nume_judet']);
      }

_adr1:
print json_encode($judet);

mysqli_free_result($result);
mysqli_close($db_conn);   

?>
我的原始Javascript的Ajax变体

更换这条线

$.getJSON("/scripts/033A_GetJudet.php", success = function(data)
用这个

$.getJSON("/scripts/033A_GetJudet.php", function(data)

这可能是解析接收到的数据时出错。HTTP 304与HTTP 200相同,只是从缓存中提取内容,而不是从服务器端提取内容

$.ajax({
  url: url,
  data: data,
  success: function(response, textStatus, jsqxhr) {
     var obj; try { obj = eval(response); } catch(e) { console.error(e); }
     // -- do something with obj --
  },
  fail: function(jqxhr, textStatus, error) {
     console.log( "error", textStatus, error);
  }
});

改为使用此函数并仔细查看数据。如果成功返回数据,我们将尝试将json字符串计算为一个对象。如果失败,将抛出一个异常,可能是SyntaxError,日志应该会显示这一点。

转到。。。啊。我建议使用更现代的代码模式。如果你有分支,早点扔,千万不要用后藤。但这不是问题所在。网络小组对请求有何评论?它给出的返回状态是否不同于200?JavaScript得到304,PHP脚本得到200。如果未执行success函数,则添加一个error函数并查看其参数。getJSON没有将一个作为参数,因此您需要在promise上调用.failsomeFunction。它现在可以工作,但最多只能调用$selJudet.changefunction。我在PHP脚本的开始处打印了一个文件,检查它是否正常工作——看来JS不喜欢它。顺便说一句,如果我在PHP中设置$message,我如何在JavaScript中检索它?这正是您正在做的事情。。。消息只是“隐藏”在数据库中的服务器上。现在,用PHP脚本设计json并将消息放在一个你知道如何在客户端Javascript上找到它们的地方实际上正确的语法应该是,function successdata但前面提到的,带等号的也是有效的Removing success=不应该有什么区别。原始代码只是将函数赋给一个全局变量,然后将结果仍然赋给函数作为getJSON的第二个参数?老实说,我不确定在哪里。注入它,而不是使用$.getJSON调用,使用$.ajax。这将以字符串形式返回响应,而不是将JSON处理为对象。eval将其转换为对象。您确实检查了Console.Log,对吗?我使用$.ajax将代码添加到我的原始帖子(见上文)中,但我编写的代码有问题,调试器甚至没有在脚本列表中显示它。
$.getJSON("/scripts/033A_GetJudet.php", function(data)
$.ajax({
  url: url,
  data: data,
  success: function(response, textStatus, jsqxhr) {
     var obj; try { obj = eval(response); } catch(e) { console.error(e); }
     // -- do something with obj --
  },
  fail: function(jqxhr, textStatus, error) {
     console.log( "error", textStatus, error);
  }
});