使用Laravel 5.2。*和纯JavaScript。
TL; DR
我需要帮助才能访问JSON参数以填充某些隐藏字段中的value属性
以及从JSON获取“usefulInformation”值并渗透模式以向用户提供信息的方法。
对jQuery包不是很感兴趣,因为该项目已经填充了20多个包。
我对Laravel和JSON的使用都很新,所以我遇到了一个问题。
我有一个页面,其中有一个表单,我有几个参数要填写,但最重要的是我设置为自动填充的隐藏字段,因为那些是用户的参数,在某种程度上,不知道的。
当用户提交表单时,参数将插入到我的数据库中的“jobsCreated
”表中,该表基本上是一种跟踪企业正在做的每件事的方法(购买,销售,要求新设备,雇用,创建帐户以进入系统等)。该表格在某种程度上是一团糟(该表有20多列,其中11列是外键),它使用复合键生成“createdJobID
”。
此表中的大多数外键来自另一个名为“jobsList
”的表。我创建了一个JSON文件,其中包含该表的所有参数和元素。像这样:
jobs.json
{
"enterpriseID":2,
"sectionID":1,
"jobID":7,
"jobDescription":"Purchase - New Mouse for Deskjob",
"usefulInformation":"Please specify the value of the equipment",
"urgencyLevel":"normal",
"atendantID":0,
"isPublic":1,
"searchEqualFiles":0,
"formType":21
},
{
"enterpriseID":2,
"sectionID":1,
"jobID":8,
"jobDescription":"Purchase - New Laptop/Desktop to Deskjob",
"usefulInformation":"Inform the type of equipment and value",
"urgencyLevel":"normal",
"atendantID":0,
"isPublic":1,
"searchEqualFiles":0,
"formType":21
},
[ it goes on for another 260++ entries, following this model]
系统在表单中询问的另一件事是autocomplete-ish字段,它列出了JSON中的所有作业。我想出了一个JavaScript代码,可以在datalist
个option
字段中渗透,如下所示:
completeForm.js
// hidden inputs
var sectionId = document.getElementById('sectionId');
var jobId = document.getElementById('jobId');
var jobTypeId = document.getElementById('typeId');
var categoryId = document.getElementById('categoryId');
var selectionOption = document.getElementsByName('selectJob');
// input autocomplete e dataList
var input = document.getElementById('selectionAutocomplete');
var dataList = document.getElementById('jobsList');
var request = new XMLHttpRequest();
request.onreadystatechange = function(response)
{
if(request.readyState === 4)
{
if(request.status === 200)
{
// important bit, bolding it
var jsonOptions = JSON.parse(request.responseText);
for(var i = 0; i < jsonOptions.length; i++)
{
var option = document.createElement('option');
option.value = jsonOptions[i].jobDescription;
dataList.appendChild(option);
}
input.placeholder = "Type the name of a job";
}
else
{
input.placeholder = "No jobs found";
}
}
};
input.placeholder = "Loading jobs";
request.open('GET', '{{{ url('storage/app/jobs.json') }}}', true);
request.send();
哪个有效,JSON正在被解析。例如,如果我console.log(jsonOptions[i].jobDescription)
,则返回正确的参数。
对于我的自动填充字段和隐藏字段,我使用datalist
元素和在JavaScript中创建的option
元素。
// opening form, label and stuff
<input type="text" name="selectionAutocomplete" id="selectionAutocomplete" list="jobsList">
<datalist name="jobsList">
// options appended here
// elements look like this
// <option value="Purchase - New Mouse for Deskjob"></option>
</datalist>
<input type="hidden" name="sectionId" id="sectionId">
<input type="hidden" name="jobId" id="jobId">
<input type="hidden" name="typeId" id="typeId">
<input type="hidden" name="categoryId" id="categoryId">
在隐藏字段中,我想将value
属性设置为JSON中存在的同一属性(如果存在)。
因此,例如,如果我选中"Purchase - New Mouse for Deskjob"
选项,我想访问此特定选项的JSON位置并渗透隐藏字段中的value
属性并触发包含“{{1 “string。
欢迎任何类型的帮助。提前谢谢。