使用JSON渗透隐藏字段

时间:2017-10-10 03:17:34

标签: javascript php json laravel-5.2

使用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代码,可以在datalistoption字段中渗透,如下所示:

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。

欢迎任何类型的帮助。提前谢谢。

0 个答案:

没有答案