我最近开始在我正在开发的网站上使用WebGL.它被用作增强功能,如果WebGL不受支持或出现错误,该网站将回退到画布渲染.
不幸的是,当Google Chrome中出现WebGL异常时,会显示错误消息栏.在用户与之交互之前,此栏不会消失.如果他们重新加载或导航到其他页面,则下次站点尝试使用WebGL时,该消息将重新出现.
对于我的站点,这意味着WebGL错误消息永远不会消失,因为每个页面都尝试使用WebGL.一旦发生错误,Chrome将不再在同一站点上使用WebGL,直到用户将其指示为Reload,因此连续错误消息实际上并不表示连续错误,只是连续尝试使用WebGL.
一旦发生WebGL错误,只需运行以下命令即可在该站点上重现此对话框:
document.createElement('canvas').getContext('experimental-webgl');
Run Code Online (Sandbox Code Playgroud)
这不会引发任何异常,并且我.onerror
没有调用canvas元素上的方法.
我无法深入研究这个因为我无法可靠地重现WebGL错误.(即使我可以在我的计算机上复制一个,但在其他计算机上可能无法再现.)
对于依赖WebGL的站点来说,这种行为是合理的,但是我的做法并不合适,因此消息只会让用户分心和混淆.
有没有办法抑制此错误消息?一旦发生错误,我不介意回到忽略 WebGL 的Ignore行为.
我收到此错误:
致命错误:在第34行的C:\ xampp\htdocs\repo\generator\model\database.php中调用boolean上的成员函数fetch()
当我运行此代码时:
class database
{
private $user = 'root';
private $pass = '';
public $pdo;
public function connect() {
try {
$this->pdo = new PDO('mysql:host=localhost; dbname=generatordatabase', $this->user, $this->pass);
echo 'Po??czenie nawi?zane!';
}
catch(PDOException $e) {
echo 'Po??czenie nie mog?o zosta? utworzone: ' . $e->getMessage();
}
}
public function createTable() {
$q = $this->pdo -> query('SELECT * FROM article');
while($row = $q->fetch()) {
echo $row['id'].' ';
}
$q->closeCursor();
}
}
?>
Run Code Online (Sandbox Code Playgroud) 这是我的php:
$response = array(
'errors' => $this->errors,
'orders_fulfilled' => $this->orders_fulfilled,
);
echo '<pre>$response: ' . print_r($response, true) . '</pre>';
$json = json_encode($response, JSON_HEX_APOS);
echo '<pre>$json: ' . print_r($json, true) . '</pre>';
Run Code Online (Sandbox Code Playgroud)
这显示了以下输出:
Run Code Online (Sandbox Code Playgroud)$response: Array ( [errors] => Array ( [0] => Error text ) [orders_fulfilled] => 0 ) $json: {"errors":["Error text\n"],"orders_fulfilled":0}
题:
当它们在 json 字符串中无效时,为什么 php 会从源 php 数组中的实际换行符中json_encode()
创建未转义的\n
字符?
我在此接受的答案看到的建议是为了躲避源换行,即从转换\n
到\\n
。那么为什么 PHPjson_encode()
不应该在这里这样做呢?就目前而言,它直接创建了一个JSON.Parse()
在 javascript中阻塞的 json 字符串。例如,尝试在控制台中运行它:
JSON.parse('{"errors":["Error text\n"],"orders_fulfilled":0}');
VM1628:1 …
首先:这是一个完全不同的问题- 如何将JSON字符串转换为数组
我的问题...
我有分配给php变量的有效JSON字符串$json
。
我知道我可以在运行时将json_decode($json, true);
其解析为php数组,但是我想超越一步,将其转换为可重用的php数组代码字符串,可以将其简单地复制并粘贴到php脚本中,例如$array = 'php array code here'
。
对于那些不可避免地会问“为什么?”的人,例如:
复制API文档中的示例JSON端点参数,然后快速转换为php数组字符串代码,以粘贴到测试脚本中,作为发出POST请求的有效测试参数
我知道我可以这样做:
$json = '
[
{
"ID": "1",
"Name": "Test One"
},
{
"ID": "2",
"Name": "Test Two"
}
]';
echo '<pre>';
echo '$phpArray = ' . print_r(json_decode($json));
echo '</pre>';
exit;
Run Code Online (Sandbox Code Playgroud)
让你靠近...
$phpArray = Array
(
[0] => stdClass Object
(
[ID] => 1
[Name] => Test One
)
[1] => stdClass Object
(
[ID] => 2
[Name] => Test Two …
Run Code Online (Sandbox Code Playgroud)