我需要通过翻译功能扩展在线申请 该应用程序由前端(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脚本中的实际翻译功能来自我的同事,所以我在这里没有任何影响,我只需要让它工作。
答案 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)
你的错误方式是:
因此,您示例中的item.value是客户端变量,您正在尝试将其与PHP一起使用。
如果您需要&#34; item&#34;如果被附加到&#39; .myDiv&#39;你可以:
事先在服务器中进行翻译,并将item.value的翻译版本发送回客户端
添加一个带有密钥的Web服务,并在数据库中搜索翻译。
第一个建议会更好,因为这里不需要多次调用服务器。