PHP代码内的调用javascript方法会导致解析错误

问题描述 投票:-3回答:2

我有javascript方法

function getLocalizedString(lang,key) {
    alert("Hello! I am an alert box!!");

    var english = {};
    english['categories'] = {'Categories'};

    var arabic = {};
    arabic['categories'] = {'التصنيفات'};

    var french = {};
    french['categories'] = {'Catégories'};

    if (lang === "ar") {
        return arabic[key];
    } else if (lang === "fr") {
        return french[key];     
    } else {
        return english[key];    
    }
}

而且我正试图在我的PHP代码中这样称呼它

<div class="row-fluid" id="desktopCategories">                            
    <?php 
    $lang = "ar";
    $key = "categories";
    $catg = echo '<script type="text/javascript">getLocalizedString("'.$lang.'","'.$key.'");</script>';
    //$catg = getLocalizedString($lang, 'categories');
    ?>
    <h1 style="text-align: center;"><?php echo $catg ; ?></h1>
</div>

但是它不起作用并且给我解析错误,任何人都可以请教吗?

javascript php
2个回答
1
投票

如果从外部文件加载JavaScript,则可能需要通过将函数调用包装在window.onload中来确保首先加载JavaScript。

$catg = echo '<script type="text/javascript">window.onload = function() { getLocalizedString("'.$lang.'","'.$key.'"); };</script>';

1
投票

您无法从PHP中“调用” JavaScript。 JavaScript是客户端代码,PHP是服务器代码。从对象分配中删除花括号,然后用document.write调用JS代码以显示该函数的返回值,如下所示:

<script type="text/javascript">
function getLocalizedString(lang,key) {
    alert("Hello! I am an alert box!!");

    var english = {};
    english['categories'] = 'Categories'; // <-- removed curly braces

    var arabic = {};
    arabic['categories'] = 'التصنيفات';   // <-- removed curly braces

    var french = {};
    french['categories'] = 'Catégories';  // <-- removed curly braces

    if (lang === "ar") {
        return arabic[key];
    } else if (lang === "fr") {
        return french[key];     
    } else {
        return english[key];    
    }
}
</script>

<div class="row-fluid" id="desktopCategories">                            
    <?php 
    $lang = "ar";
    $key = "categories";
    ?>
    <h1 style="text-align: center;">
        <script type="text/javascript">
            document.write(getLocalizedString('<?php echo $lang; ?>', '<?php echo $key; ?>'));
        </script>
    </h1>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.