交货值输入到功能

时间:2016-08-20 19:35:51

标签: javascript jquery input

我写了一个带有表单输入的简单页面。当用户在表单上打印文本时,脚本会在服务器上获取请求并获取JSON数据。我需要将输入值传递给重新处理值的函数。

var search = document.querySelector('#search');

function iReceived(msg) {
  var mass = msg.data;
  mass.map(function(e) {
    var city = document.querySelector('#city');
    var newLi = document.createElement('li');
    newLi.innerHTML = e.Description;
    city.appendChild(newLi);
  });
};

function Foo(e) {
  $.ajax({
    type: "POST",
    dataType: 'jsonp',
    url: "https://api.novaposhta.ua/v2.0/json/",
    data: {
      "modelName": "Address",
      "calledMethod": "getCities",
      "methodProperties": {}, 
      "apiKey": "6f94a6391cb5134ee68ddb7924de2a3d"
    },
    success: iReceived, /* this function I would like to pass value input
                            but I can write just a reference on this
                            function without () and arguments */
  });
  console.log(e.target.value);
};

search.oninput = Foo;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>

<form>
  <input type="text" id="search" onchange="Foo()">
</form>
<div id="content"></div>
<div id="city"></div>

我可能会把这个程序搞糟了吗?

2 个答案:

答案 0 :(得分:0)

我还不能评论,但这是一个很好的起点:

首先,让用户在运行该功能之前使用按钮提交数据。只要您在该框中输入任何文本,json请求就会触发一个字符,然后是两个字符,依此类推。

目前您放入该框的内容返回2070个结果,这些结果都是对象,我不确定api的格式,但您应该尝试只调用您需要的对象/数组的部分。

答案 1 :(得分:0)

您是否阅读过jQuery docs

  

成功 类型:功能(任何数据,字符串textStatus,jqXHR jqXHR   )
   如果请求成功则调用的函数。功能得到   传递了三个参数:从服务器返回的数据,格式化   根据dataType参数或dataFilter回调   功能,如果指定;描述状态的字符串;和jqXHR   (在jQuery 1.4.x,XMLHttpRequest中)对象。截至jQuery 1.5,   成功设置可以接受一系列功能。每个功能都会   被轮流打电话。这是一个Ajax事件。超时

因此,在您的情况下,您可以修改Foo()函数success方法,如下所示

function Foo(e) {
  $.ajax({
    type: "POST",
    dataType: 'jsonp',
    url: "https://api.novaposhta.ua/v2.0/json/",
    data: {
      "modelName": "Address",
      "calledMethod": "getCities",
      "methodProperties": {}, 
      "apiKey": "6f94a6391cb5134ee68ddb7924de2a3d"
    },
    success: function(data) {
      // the data is the data returned from the server
      // do whatever you want with the data here
      // get the value you need for iReceived here.
      iReceived(value); /* this function I would like to pass value input
                            but I can write just a reference on this
                            function without () and arguments */
    }
  });
  console.log(e.target.value);
};