格値からPHPのJavaScript[複製]
-
23-08-2019 - |
質問
この質問に答えはこちら
私はPHPのコードは下記の通りです。
<?php
echo "<SCRIPT LANGUAGE='javascript'>add dd_Employee('".$id1."','".$fname1."',".$sal1.");</SCRIPT>";
echo "<SCRIPT LANGUAGE='javascript'>add dd_Employee('".$id2."','".$fname2."',".$sal2.");</SCRIPT>";
....
?>
...
私のJavaScriptコードを含む
var details=new Array();
function addEmployee(id,fname,salary){
var temp=new Array(id,fname,salary);
details[details.length]=temp;
alert(temp);
}
function displayEmployee(){
for (var i=0;i<details.length;i++)
var temp_details=details[i];
//Display the id,name,sal
var id=temp_details[0];
var name=temp_details[1];
var sal=temp_details[2];
alert(id);
alert(name);
alert(sal);
}
現在、問題は何によって割り当てられPHPすvisbleみ AddEmployee
.ることできることを期待しています。す。その中で displayEmployee
価値を割り当てるPHPできません。あずに私の論理によるものか。
解決
ただ、JavaScript関数を通過させることよりも、むしろ直接あなたのグローバルなデータ構造を移入します。あなたはaddEmployeeでメモリを割り当てているので、あなたはおそらく、変数のスコープの問題に実行しています。
例:
<?php
print "details[details.length] = new Array('$id1', '$name1', '$salary1');\n";
?>
他のヒント
に見えます。今、あなたは何もしませんが、すべての繰り返しで再宣言されているあなたの一時変数に値を割り当てる1行for
ループを持っています。私はスコープのルールは、このような状況ではJavaScriptが何であるかを覚えていないことができますが、それは(それは意図的なの場合)これを行うには、一般的に悪い習慣です。あなたのdisplayEmployee()
方法のために、このような何かをしてみます。
function displayEmployee(){
for(var i=0; i<details.length; i++) {
var temp_details = details[i];
//Display the id, name, and sal.
var id = temp_details[0];
var name = temp_details[1];
var sal = temp_details[2];
alert(id);
alert(name);
alert(sal);
}
}
これはあなたの当面の問題を修正する必要があります。あなたのコードのすべてを管理している場合は、私はそれがより扱いですので、オブジェクトに従業員データを回してお勧めします。これを行うには、このPHPコードを使用する必要があります:
<?php
echo '<script>
addEmployee('.json_encode(array(
'id' => 'id1',
'name' => 'fname1',
'salary' => 1024,
)).');
addEmployee('.json_encode(array(
'id' => 'id2',
'name' => 'fname2',
'salary' => 2048,
)).');
</script>';
?>
そして、このように見えるようにJavaScriptコードを変更します:
var details = [];
function addEmployee(employeeObj){
details[details.length] = employeeObj;
alert(employeeObj);
}
function displayEmployee(){
for(var i=0; i<details.length; i++) {
alert(details[i].id);
alert(details[i].name);
alert(details[i].salary);
}
}
私はこのコードをテストしていませんが、それは実行する必要があります。
は、
PHPによって生成されたJavaScriptの呼び出しでエラーが発生していますecho "<SCRIPT LANGUAGE='javascript'>add dd_Employee('".$id1."','".$fname1."',".$sal1.");</SCRIPT>";
でなければなりません。
echo "<SCRIPT LANGUAGE='javascript'>addEmployee('".$id1."','".$fname1."',".$sal1.");</SCRIPT>";
そして、あなたはOOPするためにそれを変更したい場合は?
<?php
$employeeList[] = array('sdf3434', 'Bob', 123.34);
$employeeList[] = array('wer335dg', 'Joe', 223);
?>
<html>
<head>
<script>
function Employees() {
this.list = new Array();
}
Employees.prototype.add = function (id, fname, sal) {
this.list.push(new Array(id, fname, sal));
};
Employees.prototype.display = function () {
for(var i=0, t = this.list.length;i<t;i++) {
var emp = this.list[i];
alert(emp[0]);
alert(emp[1]);
alert(emp[2]);
}
};
var employees = new Employees();
<?php
foreach ($employeeList as $employee) {
list($id, $fname, $sal) = $employee;
printf("employees.add('%s', '%s', %f);\n", $id, $fname, $sal);
}
?>
</script>
</head>
<body>
<a href="#" onclick="employees.display();">click</a>
</body>
</html>
ブログ記事の値JavaScriptの/ HTMLページからPHPへとPHPのページからJavaScriptに交換する のいくつかのために役に立つかもしれません。