我写了一个带有表单输入的简单页面。当用户在表单上打印文本时,脚本会在服务器上获取请求并获取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>
我可能会把这个程序搞糟了吗?
答案 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);
};