【发布时间】:2014-04-16 18:24:13
【问题描述】:
I have a form that uses AJAX and Javascript to submit itself.
HTML:
<h3>Sign Up Here</h3>
<form name="signupform" id="signupform" onsubmit="return false;">
<div>Username:</div>
<input id="username" type="text" onblur="checkusername()" onkeyup="restrict('username')" maxlength="16" />
<span id="unamestatus"></span>
<div>Email Address:</div>
<input id="email" type="text" onfocus="emptyElement('status')" onkeyup="restrict('email')" maxlength="88" />
<div>Create Password:</div>
<input id="pass1" type="password" onfocus="emptyElement('status')" />
<div>Confirm Password:</div>
<input id="pass2" type="password" onfocus="emptyElement('status')" />
<div>Gender:</div>
<select id="gender" onfocus="emptyElement('status')">
<option value=""></option>
<option value="m">Male</option>
<option value="f">Female</option>
</select>
<div>Country:</div>
<select id="country" onfocus="emptyElement('status')">
<option value="england">England</option>
</select>
<button id="signupbtn" onclick="signup()">Create Account</button>
<span id="status"></span>
Ajax/JS:
function signup(){
var u = _("username").value;
var e = _("email").value;
var p1 = _("pass1").value;
var p2 = _("pass2").value;
var c = _("country").value;
var g = _("gender").value;
var status = _("status");
if(u == "" || e == "" || p1 == "" || p2 == "" || c == "" || g == ""){
status.innerHTML = "Message 1";
} else if (p1 != p2){
status.innerHTML = "Message 2!";
} else {
_("signupbtn").style.display = "none";
status.innerHTML = "please wait...";
var ajax = ajaxObj("POST", "signup.php");
ajax.onreadystatechange = function(){
if(ajaxReturn(ajax) == true){
if(ajax.responseText != "signup_success"){
status.innerHTML = ajax.responseText;
_("signupbtn").style.display = "block";
} else {
_("signupform").innerHTML = "Message 3";
}
}
}
ajax.send("u="+u+"&e="+e+"&p="+p1+"&c="+c+"&g="+g);
}
}
如您所见,我的第二个代码中有Message 1、Message 2 和Message 3。
这是我遇到麻烦的部分:我将有多个语言文件,其中包含与某些文本相关的一些变量。例如,在我的 french.php 文件中,我将拥有:$welcome = 'Bonjour!'。然后我将检查 MySQL 表中的默认语言并确定它是什么。这很简单。但是我怎样才能让 AJAX 获取 $welcome 变量并使用它而不是 Message 1 例如?
对于沙里科夫:
<head>
<?= include_once("language.php"); ?>
<script type="text/javascript">
window.onload = function() {
function _(x){
return document.getElementById(x);
}
var welcome = <?=json_encode($welcome);?>
_("test").innerHTML = '<h2>Mesajul este: ' + welcome + '</h2>';
}
</script>
</head>
<body>
<div id="test"></div>
</body>
【问题讨论】:
-
为什么不在
signup.php或相关函数中处理生成Message 1、Message 2、Message 3字符串或相关函数(例如,在 AJAX 调用的 PHP 部分中生成响应消息服务器端而不是事后通过 JS 在客户端执行此操作)。然后,您可以检查 PHP 脚本本身的本地化并返回已翻译的Message 1、Message 2或Message 3作为 AJAX 响应的一部分。 -
我一直在考虑这个问题,如果我将所有消息都放在
signup.php中,signup.php将会超载。我将有多个包含相同变量的 php 文件,但将声明不同的值。例如:在english.php文件中,$welcome将设置为“欢迎”,但在french.php中,相同的变量将设置为“Bonjour”。在包含文件之前,我将检查 SQL 数据库内部以查看设置的默认语言。如果设置为法语,它将包括french.php。我可以显示这些消息的方式是唯一的问题。
标签: javascript php ajax echo take