문제

이 질문은 이미 여기에 답이 있습니다.

다음과 같이 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가 할당 한 내용입니다. 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까지의 가치 교환 일부에게 도움이 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top