2017-12-22 6 views
1

次のコードでは、jQueryで新しいdiv要素を追加しようとしています。私はjavascriptの文体にこれを取得するにはどうすればよいjavascriptで動的にPHP配列を取得する

$(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); 
    }); 
}); 

入力フィールドの値はPHP

に動的に作成され
echo (isset($mask_alias[$languages[$i]['id']]) ? stripslashes($mask_alias[$languages[$i]['id']]) : $categories_desc_fields['mask_alias']); 

$languages[$i]['id'] 

はJavaScriptで

+ value['id'] + 

と等価です。

結果は、私はlanguagesはJSON形式ではなく、実際のオブジェクト内の文字列である疑いがある、この非作業コード

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">'; 
+0

例えば

// 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でこれをやっているので、それはあなたがおそらく唯一のPHPでこれを行うことができることを指摘する価値がある、と心配する必要はありませんjavascriptで読み込まれるphp変数をエコーすることについて – James

+0

それはちょうど私かもしれませんが、私は本当にあなたが何を求めているのかを理解するのに苦労しています、あなたは精巧にできますか? – zfrisch

+0

javascriptの構文に変更したいコードラインを追加しました。 – Modulfux

答えて

0

あなたはjavascriptでこれのPHPと一部では、このの一部を行う必要があります。

私は、PHPで、javascriptに渡される言語に基づいて新しい配列を作成することをお勧めします。ここではすべてのPHPレベルの計算が既に行われています。その後、

$(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); 
    }); 
}); 
+0

ショップシステムによって読み込まれた別のjavascriptにPHP部分がエラーを起こします – Modulfux

+0

「使用」は忘れてしまいます。エラーが発生した場合、エラーは何ですか? – James

+0

私はあなたのPHPコードを(店舗システムの元のファイルでも)使用すると、エラーが発生します。TypeError:aはckeditor.jsで未定義です – Modulfux

1

var languages = JSON.parse(<?php echo json_encode($languages); ?>)'

+0

'var languages = <?php echo json_encode($ languages); ?>; 'はより短いです。 – Zerquix18

関連する問題