-3

我正在建立一个网站,我在 php 变量中有一些数据。我正在尝试将这些数据用于支持 Java 的浏览器的 jQuery 引擎。

我遇到了在 jQuery 脚本中使用 php 变量的问题:

这是我无法工作的代码。

//PHP数组:

$filters['ab']='text a';
$filters['cd']='text b';

// jQuery 脚本:

// Key I want to find in array
var test = "ab";

// Reading php array into JSON
filters = $.parseJSON('<?php echo json_encode($filters); ?>');

// Trying to use JSON data to create Array using original keys and values
var filtersArray = new Array();
$.each(filters, function(key) {
    filtersArray[key] = $(filters).attr(key);
});  
alert(filtersArray['ab']); returns "text a";  // Seems to be working

// Trying to find the test variable value
filterIndex = $.inArray(test, filtersArray) // Not found

抱歉之前的帖子版本粗心。我虽然更短会更好,但实际上它完全没用。

谢谢

4

2 回答 2

2

我想你需要这样的东西

function inObject(obj, val) {
    return Object.keys(obj).filter(function(key) {
        return obj[key] === val;
    }).length > 0;
}

jsFiddle 演示在这里 - http://jsfiddle.net/VZ5A9/

请参阅以下页面以了解浏览器兼容性以及用于添加支持的 shims

更新

如果需要找key,试试这个(这个也比较兼容老浏览器)

function findFirstKeyByValue(obj, val) {
    for (var key in obj) {
        if (obj.hasOwnProperty(key) && obj[key] === val) {
            return key;
        }
    }
    return null;
}

演示 - http://jsfiddle.net/VZ5A9/1/

于 2013-09-04T00:13:47.547 回答
1

这不起作用的原因是因为您命名的变量arr不是数组,而是对象文字。要使此代码正常工作,请尝试以下操作(FIDDLE):

arr = ["b","d","f"];
uri = "d";

alert(jQuery.inArray(uri, arr));
于 2013-09-03T23:29:39.397 回答