【发布时间】:2014-11-21 12:28:56
【问题描述】:
我想做的事:
我想做一个带有 jquery 自动完成功能的输入文本字段,该功能从跨域 curl 请求中获取源数据。结果应该和这个例子完全一样(CSS在这里不重要):http://abload.de/img/jquerydblf5.png(所以我实际上想显示从 curl 请求中获得的其他信息)。获取源数据的 URL 是 http://www.futhead.com/15/players/search/quick/?term=,最后我添加了当前在我的输入字段中输入的那些字母(例如“罗纳尔多”)。
目前我只尝试执行搜索请求,而没有在下拉列表中显示所有信息,如上面的屏幕所示。我只想查看我通过 curl 请求实际返回了哪些玩家姓名。稍后我将尝试为下拉列表添加更多信息。也许你们也可以帮助我解决这个问题(我认为它称为自定义 renderItem ??)。
这是我尝试过的:
<script>
$( "#tags" ).autocomplete({
source: function (request, response) {
$.ajax({
type: 'GET',
url: 'playerscraper.php',
dataType: "json",
data: function () {
return $("#results").val()
},
success: function (data) {
// I have no idea what this response and map is good for
response($.map(data, function (item) {
return {
label: item.label,
id: item.value,
};
}));
},
});
}
});
</script>
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
</div>
我的 playercraper.php 正在执行 curl 请求,实际上返回了一个数组(用 echo 测试):
$term = $_GET['term'];
$curlRequest = new CurlRequest();
$result = $curlRequest->get('http://www.futhead.com/15/players/search/quick/?term=' . $searchterm);
$players = array();
return json_encode($result);
我的问题:
我不知道如何以这种方式为自动完成功能执行源代码部分,因为我从输入字段中的搜索项从 ajax 请求中获得正确的结果。当我在输入字段中输入内容时,什么也没有发生(定义源的函数被调用 - 使用警报进行测试)。
首先尝试在您的帮助下解决问题(当前代码):
<script>
$( "#tags" ).autocomplete({
source: function (request, response) {
$.ajax({
type: 'GET',
url: 'playerscraper.php',
dataType: "json",
data: function () {
term: request.term
},
success: function (data) {
// I have no idea what this response and map is good for
response($.map(data, function(item) {
return {
label: item.full_name,
value: item.player_id
};
}));
},
});
},
minLength: 3,
delay: 500
});
</script>
【问题讨论】:
-
你为什么打
playerscraper.php而不是http://www.futhead.com/15/players/search/quick/?term=..? -
顺便说一句,ajax 成功回调中的
data看起来如何......? -
因为那里有允许来源规则,我需要通过 Curl 请求从 futhead 获取这些数据。它不是我自己的页面。
标签: javascript jquery ajax json jquery-ui-autocomplete