Как ссылаться на JSON, используемый с PHP и хранящий surveyjs в mysql

Мой 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});

или что мне делать?

0

Решение

Удалите «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"}
]
}
0

Другие решения

Хорошо, проблема, как я вижу, заключается в следующем:

//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

Ура!

0

Во-первых, выделите данные 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',
),
),
),
),
)
0
По вопросам рекламы [email protected]