我是jQuery的新手,想知道如何将php文件中的数据键提取到jQuery中。
我有这个jQuery代码将输入发布到file.php
并在每个keyup上执行查询。
file.php
在数组的帮助下回显结果:
echo '<li>'.$row["name"].' '.$row["place"].' '.$row["year"].'</li>';
jQuery代码是:
$(document).ready(function() { //changes are possible when the page has fully loaded
$('.inp').keyup(function() { //executes keyup function to the field class "inp"
var inp = $(this).attr('value'); //sets a variable with the value of input from class="inp"
$.post('ajax/file.php', {inp:inp}, function(data) { //posts that value to file.php as variable inp and executes the function (data) to this
$('.result').html(data); //adds the returned result into HTML content as a first element in the set of class="result" => <li>
$('.result li').click(function() { //executes click function when clicking li element
var result_value = $(this).text(); //sets a variable and prepares something as text
$('.inp').attr('value', result_value); //fills value attribute of field class "inp" with the variable result_value
$('.result').html(''); //clears li to ul class to hide the lists of results
});
});
});
});
因此,当我点击li
结果时,它将被转换为文本,输入字段的value属性将被填充。
举个例子:
echo '<li>'.$row["name"].' '.$row["place"].' '.$row["year"].'</li>';
将输出:
<li>ExAmpLE Home 2013</li>
因此,当我点击li
时,输入字段的新值为:
ExAmpLE Home 2013
我的问题是如何排除特定的数组键,如$row["name"]
或$row["year"]
,将结果值转换为该click函数的文本,以便输入字段的新值为:
ExAmpLE Home
答案 0 :(得分:2)
你可以使用json:
file.php
json_encode(array('name' => $row["name"], 'place' => $row["place"], 'year' => $row["year"]));
在你的javascript中使用jQuery data()函数将你的数据存储在DOM中以便以后检索它:
$.post('ajax/file.php', {inp:inp}, function(data) {
$('.result').html(
$('<li>').text(data.name + ' ' + data.place + ' ' + data.year)
.data('name', data.name)
.data('place', data.place)
.data('year', data.year)
.click(function() {
$('.inp').attr('value', $(this).data('name') + ' ' + $(this).data('place'))
$(this).empty();
})
);
}, 'json');
答案 1 :(得分:0)
将您需要的东西放入范围应该有效:
echo '<li><span>'.$row["name"].' '.$row["place"].'</span> '.$row["year"].'</li>';
我假设你已经知道如何获得li元素。然后做:
var $li= $(this);
var text= $li.find('span').text();