如何在jQuery中从PHP获取数组键

时间:2013-04-17 10:51:20

标签: php javascript jquery

我是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

2 个答案:

答案 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();