Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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/1/php/276.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 回音语句不工作?似乎格式正确_Javascript_Php - Fatal编程技术网

Javascript 回音语句不工作?似乎格式正确

Javascript 回音语句不工作?似乎格式正确,javascript,php,Javascript,Php,我正在用PHP编写的javascript创建一个对象,语法似乎是正确的,但它给了我一个错误 我传递给对象的变量是字符串,我尝试将它们放在引号中,等等。我还尝试创建一个JS函数来实现这一点,结果类似 <?PHP $TEDS = $db->query(" SELECT a.* FROM TEDS a "); //Add each TED location into a javascript array. echo '<script type="text/javascript"

我正在用PHP编写的javascript创建一个对象,语法似乎是正确的,但它给了我一个错误

我传递给对象的变量是字符串,我尝试将它们放在引号中,等等。我还尝试创建一个JS函数来实现这一点,结果类似

<?PHP 

$TEDS = $db->query("
SELECT a.*
FROM TEDS a
");
//Add each TED location into a javascript array.

echo '<script type="text/javascript">';
while($TED = $TEDS->fetch_assoc())
{
   echo 'var pos = {lat: '.$TED['latitude'].', lng: '.$TED['longitude'].'};'; //THIS ECHO STATEMENT IS THE ONE GIVING ME PROBLEMS.
}
echo '</script>';

?>


很可能您的某个纬度值没有值,导致它打印如下内容:

var pos = {lat:  , lng: 1234}
如果属性没有值,JavaScript解析器会意外地看到逗号。这将极大地解释意外的逗号语法错误

因此,首先,您不需要手动构造JSON。PHP具有将PHP数组转换为JSON的功能。使用它为您正确构建JSON

接下来,代码重复打印pos,覆盖前面的值。如果只关心最后一个值,不要打印所有内容。如果您确实关心所有值,请将它们存储在数组中:

<?php
// Get your TEDS
$teds = $TEDS->fetch_assoc();

// Using array_map to convert the items from latitude-longitude to lat-lng.
$teds_array = array_map(function($ted) {
  return ['lat' => $ted['latitude'], 'lng' => $ted['longitude']];
}, $teds);

// Serialize to JSON
$teds_json = json_encode($teds_array);
?>

// positions will be an array of objects with lat-lng.
var positions = <?php echo $teds_json; ?>

最后,要小心XSS。不要像上面那样只打印未初始化的值。在将数据打印到页面上之前,请确保数据是干净的。

我会尝试在循环之后写入全文。通过这种方式,您可以构建完整的json数组:


另一种方法是只解码$TED。

有什么错误?您可能只有一个pos var,不是吗?也许你应该用JSON编码整个事情?我在google chrome控制台上得到的错误是:Uncaught SyntaxError:Unexpected token,所以逗号抛出了一个Unexpected token。我会尝试用不同的名称命名。这是一个JS错误。因此PHP在技术上不是一个问题。呈现的字符串是什么?var positions=[];var pos={lat:45.7165738,液化天然气:-122.6455005};console.logHIT;var pos={lat:39.9414031,lng:-81.601519};console.logHIT;var pos={lat:47.5145695,液化天然气:-122.3554489};console.logHIT;var pos={lat:47.7664257,lng:-122.2098511};console.logHIT;var pos={lat:45.9154793,液化天然气:-95.3720144};console.logHIT;var pos={lat:41.1542148,lng:-88.6541089};console.logHIT;等等,我有一个“console.logHIT”;命令,但我将其从问题中删除,因为它不重要。但这里是脚本标签的内容@Ivar@user3783243使每个名称唯一并没有改变任何不幸的事情。你是对的,我的一些LAT/LNG是空的或空的。基本上,我的最终目标是得到所有的LAT/lngs,然后循环通过它们,找到靠近我当前位置的。在一个循环中可以吗?所以对于记录的每一行。又名$TED=$TEDS->fetch_assoc{CODE}如何循环遍历变量位置中的每个对象=