Возьмите переменную из файла PHP, используя AJAX/JavaScript
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>
1 ответ
НОВЫЙ ОТВЕТ НА ДОБАВЛЕННЫЙ КОД
<?= include_once("language.php"); ?>
- это не верно. Ты можешь использовать <?=
только когда вы выводите переменную (<?=$welcome;?>
== <?php echo $welcome; ?>
). Вы должны удалить =
войдите из этого php тега. <? include_once("language.php"); ?>
верно.
использование console.log(welcome)
или же alert(welcome)
чтобы быть уверенным, что приветствие назначено.
СТАРЫЙ ОТВЕТ Вы выводите этот js и html throw php, верно?
Вы можете использовать это:
// some php code
?>
<script type="text/javascript">
var welcome = <?=json_encode($welcome); ?>
// alert(welcome); // to make sure value is assigned in js
</script>
<?
//more php code or html output
Вы должны использовать <?=json_encode($welcome); ?>
вместо простого <?=$welcome;?>
, Объяснение Marc B:
Никогда не сбрасывайте произвольный текст из PHP в код JavaScript. С большой вероятностью вы введете синтаксическую ошибку JS и уничтожите весь скрипт. ВСЕГДА используйте json_encode:
<?= json_encode($welcome) ?>
Дополнительный пример:
// more php
include_once("language.php");
// var_dump($welcome); // to debug what value assigned to $welcome
?>
<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>
<?
// more php