如何在JS中插入PHP函数?

时间:2016-12-19 15:14:09

标签: javascript php jquery ajax

我需要通过翻译功能扩展在线申请 该应用程序由前端(HTML + JS)和后端(PHP)组成,后者连接到数据库 前端和后端通过Ajax(jQuery)进行通信。

从我的同事那里得到另一个带有函数func的PHP文件,该文件将一个单词作为参数。然后,它根据设置语言在数据库中查找其定义,并返回翻译后的单词。

假设我有一个简单的HTML表单,如下所示:

<?php echo func("Name"); ?>: <input type="text" id="name" />
<?php echo func("occupation"); ?>: <input type="text" id="address" />
...

如果语言设置为法语,则输出如下:

Prénom: <input type="text" id="name" />
Profession: <input type="text" id="address" />

但在我的情况下,所有输出都是通过Ajax(jquery)从数据库动态传递的。所以我假设,我需要将PHP放入我的JS脚本中。

当我尝试:

function getData() {
    $.ajax({
        type : "GET",
        url : "backend.php",
        data : {
            q : "query",
            attribut : "attr",
        },
        success : function(data) {
            $.each(data, function(i, item) {
                $('.myDiv').append("<button>" + <?php echo htmlspecialchars(tr(" + item.value +  "))?> + "</button>");
        },
        error : function(jqXHR, status, error) {
            console.log(status, error);
        }
    });
}

在这种情况下,我收到以下错误:

  

未捕获的SyntaxError:意外的标记&lt;

PS:PHP脚本中的实际翻译功能来自我的同事,所以我在这里没有任何影响,我只需要让它工作。

2 个答案:

答案 0 :(得分:0)

也许这可以帮助您理解从AJAX调用中获得的结果。 使用AJAX调用PHP脚本后,您将PHP脚本的输出存储在data函数中使用的success变量中。请尝试以下方法:

function getData() {
    $.ajax({
        type : "GET",
        url : "backend.php",
        data : {
            q : "query",
            attribut : "attr",
        },
        success : function(data) {
           console.log(data);
        },
        error : function(jqXHR, status, error) {
            console.log(status, error);
        }
    });
}

这应该在您的浏览器控制台中显示您的AJAX调用的结果。 然后问题不再是获取数据,而是关于正确使用它。 ;)

更新
因此,在您的方案中,您可以将标签包含在span元素中:

<span class='name-wrapper'>Name</span> <input ... >

然后在获得AJAX响应后,使用

$('.name-wrapper').html( data ); // data being the variable in the 'success' function of Ajax call 

答案 1 :(得分:-2)

你的错误方式是:

  • 您的PHP代码在服务器
  • 上执行
  • 您的Javascript代码在客户端的计算机上执行

因此,您示例中的item.value是客户端变量,您正在尝试将其与PHP一起使用。

如果您需要&#34; item&#34;如果被附加到&#39; .myDiv&#39;你可以:

  • 事先在服务器中进行翻译,并将item.value的翻译版本发送回客户端

  • 添加一个带有密钥的Web服务,并在数据库中搜索翻译。

第一个建议会更好,因为这里不需要多次调用服务器。