Мой PHP-файл имеет код, похожий на этот
<?php
$connect = mysqli_connect("localhost","root","","surveytest");
$query = '';
$table_data = '';
$filename2 = "employee_data.js";
$data2 = file_get_contents($filename2);
$array2 = json_decode($data2, true);
foreach($array2 as $row) //Extract the Array Values by using Foreach Loop
{
$query .= "INSERT INTO survey(name, gender, designation)
VALUES
('".$row["name"]."',
'".$row["gender"]."',
'".$row["designation"]."'); "; // Make Multiple Insert Query
$table_data .= '
<tr>
<td>'.$row["name"].'</td>
<td>'.$row["gender"].'</td>
<td>'.$row["designation"].'</td>
</tr>
'; //Data for display on Web page
}
if(mysqli_multi_query($connect, $query)) //Run Mutliple Insert Query
{
echo '<h3>Imported JSON Data</h3><br />';
echo '
<table class="table table-bordered">
<tr>
<th width="45%">Name</th>
<th width="10%">Gender</th>
<th width="45%">Designation</th>
</tr>
';
echo $table_data;
echo '</table>';
}
?>
Мой файл JavaScript имеет код, похожий на этот
var json =
{
"items": [
{
"name": "Rusydi",
"gender": "Male",
"designation": "System Architect"},
{
"name": "Hakim",
"gender": "Male",
"designation": "Conservation worker"}
]
}
Привет! Я новичок в Javascript и JSON.
Я пытаюсь добавить var JSON в базу данных MySQL.
Теперь я хочу сослаться на этот javascriptfile (var json), но он не работает.
Моя цель состоит в том, чтобы попытаться сохранить эту переменную в MySQL.
Вот почему я стараюсь делать так.
var json = {
questions: [
{
name: "name",
type: "text",
title: "Please enter your name:",
placeHolder: "Jon Snow",
isRequired: true
}, {
name: "birthdate",
type: "text",
inputType: "date",
title: "Your birthdate:",
isRequired: true
}, {
name: "color",
type: "text",
inputType: "color",
title: "Your favorite color:"}, {
name: "email",
type: "text",
inputType: "email",
title: "Your e-mail:",
placeHolder: "[email protected]",
isRequired: true,
validators: [
{
type: "email"}
]
}
]
};
Это полный код.
https://surveyjs.io/Examples/Library/?id=questiontype-text&платформа = JQuery&тема = по умолчанию
Survey
.StylesManager
.applyTheme("default");
var json = {
questions: [
{
name: "name",
type: "text",
title: "Please enter your name:",
placeHolder: "Jon Snow",
isRequired: true
}, {
name: "birthdate",
type: "text",
inputType: "date",
title: "Your birthdate:",
isRequired: true
}, {
name: "color",
type: "text",
inputType: "color",
title: "Your favorite color:"}, {
name: "email",
type: "text",
inputType: "email",
title: "Your e-mail:",
placeHolder: "[email protected]",
isRequired: true,
validators: [
{
type: "email"}
]
}
]
};
window.survey = new Survey.Model(json);
survey
.onComplete
.add(function (result) {
document
.querySelector('#surveyResult')
.innerHTML = "result: " + JSON.stringify(result.data);
});
$("#surveyElement").Survey({model: survey});
или что мне делать?
Удалите «var json =» из вашего файла и измените расширение на «.json» вместо «.js».
Поскольку ваш файл javascript не содержит допустимой строки JSON, он не может быть декодирован php.
employee_data.json
{
"items": [
{
"name": "Rusydi",
"gender": "Male",
"designation": "System Architect"},
{
"name": "Hakim",
"gender": "Male",
"designation": "Conservation worker"}
]
}
Хорошо, проблема, как я вижу, заключается в следующем:
//employee_data.js
var json =
{
И тогда вы импортируете это
$filename2 = "employee_data.js";
$data2 = file_get_contents($filename2);
$array2 = json_decode($data2, true);
JSON — это не код JavaScript (строго говоря), это способ форматирования или кодирования объектов JavaScript в виде строк. (JAVAScript О▪ Таблица Notation). Итак, ваш файл должен начинаться с {
а не переменная настройка. Так что вам просто нужно удалить это var json =
немного.
Если вы проверите var_dump($array2);
это, вероятно, скажет NULL
и если вы проверите echo json_last_error_msg()
сразу после выполнения json_decode
это, вероятно, скажет что-то вроде Syntax error invalid JSON
так далее..
Это можно воспроизвести так:
var_dump(json_decode('var json={"foo":"bar"}', true));
echo json_last_error_msg();
Выход:
NULL
Syntax error
Если вы удалите var json =
из моего слишком простого примера вы получите это:
array(1) {
["foo"]=> string(3) "bar"}
No error
Ура!
Во-первых, выделите данные JSON, которые следует сразу var json =
и заканчивается }
за которым сразу следует ;
,
Затем исправьте строку json, заключив все ключи в двойные кавычки.
Наконец, преобразуйте данные в массив, чтобы вы могли выполнить процесс запроса с помощью questions
Подмассивы.
* Обратите внимание, я не рекомендую вам использовать mysqli_multi_query()
потому что это нестабильно / небезопасно. Я рекомендую вам использовать подготовленное заявление для вставки ваших данных. Я воздержусь от объяснения этой задачи, потому что есть много примеров того, как это сделать в StackOverflow.
Код: (PHP Demo) (Regex 1 Demo) (Regex 2 Demo)
if (preg_match('~^var json = \K{.*?}(?=;)~ms', $js_file_contents, $match)) { // cut away extra
$json = preg_replace('~^\s*\K\w+~m', '"\0"', $match[0]); // quote-wrap the keys
var_export(json_decode($json, true)); // convert json string to array and display
}
Выход:
array (
'questions' =>
array (
0 =>
array (
'name' => 'name',
'type' => 'text',
'title' => 'Please enter your name:',
'placeHolder' => 'Jon Snow',
'isRequired' => true,
),
1 =>
array (
'name' => 'birthdate',
'type' => 'text',
'inputType' => 'date',
'title' => 'Your birthdate:',
'isRequired' => true,
),
2 =>
array (
'name' => 'color',
'type' => 'text',
'inputType' => 'color',
'title' => 'Your favorite color:',
),
3 =>
array (
'name' => 'email',
'type' => 'text',
'inputType' => 'email',
'title' => 'Your e-mail:',
'placeHolder' => '[email protected]',
'isRequired' => true,
'validators' =>
array (
0 =>
array (
'type' => 'email',
),
),
),
),
)