在javascript中动态获取php数组
在下面的代码中,我尝试使用jQuery添加一个新的div元素在javascript中动态获取php数组,javascript,php,jquery,Javascript,Php,Jquery,在下面的代码中,我尝试使用jQuery添加一个新的div元素 $(document).ready(function () { var languages = <?php echo json_encode($languages); ?>; var div = ''; $.each(languages, function (key, value) { div = '<div class="main bg_notice" style="pad
$(document).ready(function () {
var languages = <?php echo json_encode($languages); ?>;
var div = '';
$.each(languages, function (key, value) {
div = '<div class="main bg_notice" style="padding:3px; line-height:20px;">';
div += ' <img src="/lang/' + value['directory'] + '/admin/images/' + value['image'] + '" alt="' + value['name'] + '" title="' + value['name'] + '" style="border:0;">';
div += ' <b><?php echo TEXT_MASK_ALIAS; ?></b>';
div += ' <input type="text" name="mask_alias[' + value['id'] + ']" value="" style="width:80%" maxlength="255">';
div += '</div>';
$('[name="categories_name[' + value['id'] + ']').closest('div').after(div);
});
});
如何将其转化为javascript的写作风格
$languages[$i]['id']
相当于
+ value['id'] +
在javascript中
结果应该类似于此非工作代码
div += ' <input type="text" name="mask_alias[' + value['id'] + ']" value="<?php echo (isset($mask_alias[$languages[$i]['id']]) ? stripslashes($mask_alias[$languages[$i]['id']]) : $categories_desc_fields['mask_alias']); ?>" style="width:80%" maxlength="255">';
div+='var languages=JSON.parse()'
我怀疑languages
是JSON格式的字符串,而不是实际的对象
尝试使用JSON.parse
将字符串转换为对象
var languages=JSON.parse()代码>
parse()方法解析JSON字符串,构造字符串描述的JavaScript值或对象
您应该使用php和javascript来完成部分工作
我建议在PHP中,您创建一个基于语言的新数组,该数组将被提交给javascript,所有PHP级别的计算都已经完成
比如说
// php code
// you already have $languages defined
$jsLanguages = array_map(function ($key, $lang) {
$lang['mask'] = isset($mask_alias[$lang['id']]) ? stripslashes($mask_alias[$lang['id']]) : $categories_desc_fields['mask_alias'];
$lang['imageURL'] = "/lang/{$lang['directory']}/admin/images/{$lang['image']}";
return $lang;
}, $languages);
然后
$(文档).ready(函数(){
var语言=;
var div='';
$.each(语言、函数(键、语言){
div='';
div+='';
div+='';
div+='';
div+='';
$('[name=“categories_name['+lang.id+']”)。最近('div')。在(div)之后;
});
});
既然您是在document.ready中完成这项工作的,那么值得指出的是,您可能只需要使用php就可以完成这项工作,而不必担心通过javascript读取php变量。可能只有我一个人,但我真的很难理解您的要求,您能详细说明吗?我已经添加了我想要的代码行ke更改为javascript语法。Post(部分)请发布
的内容。var语言是0:Object{id:“2”,name:“Deutsch”,code:“de”,…}1:Object{id:“1”,name:“English”,code:“en”,…}var languages=;
更短。php部分导致ShopSystems加载的另一个javascript出错,我总是忘记“使用”-该更改可能会起作用。如果它产生错误,错误是什么?当我使用您的php代码(甚至在shopsystem的原始文件中)时,它会导致错误TypeError:a在ckeditor.js中未定义如果我将function(key,lang)更改为function(lang),它似乎可以工作
// php code
// you already have $languages defined
$jsLanguages = array_map(function ($key, $lang) {
$lang['mask'] = isset($mask_alias[$lang['id']]) ? stripslashes($mask_alias[$lang['id']]) : $categories_desc_fields['mask_alias'];
$lang['imageURL'] = "/lang/{$lang['directory']}/admin/images/{$lang['image']}";
return $lang;
}, $languages);
$(document).ready(function () {
var languages = <?php echo json_encode($jsLanguages); ?>;
var div = '';
$.each(languages, function (key, lang) {
div = '<div class="main bg_notice" style="padding:3px; line-height:20px;">';
div += ' <img src="' + lang.imageURL + '" title="' + lang.name + '" style="border:0;">';
div += ' <b><?php echo TEXT_MASK_ALIAS; ?></b>';
div += ' <input type="text" name="mask_alias[' + lang.id + ']" value="' + lang.mask + '" style="width:80%" maxlength="255">';
div += '</div>';
$('[name="categories_name[' + lang.id + ']"').closest('div').after(div);
});
});