2011-08-23 4 views
1

저는 jQuery와 함께 PHP, AJAX를 사용하고 있습니다.이 경우 statment 프로세스에서는 선택 버튼과 함께 onclick="removeplayer(test);"과 함께 선택된 모든 플레이어가 표시됩니다. 하지만 '플레이어 삭제'버튼을 클릭하면 null 또는 undefined 중 하나가 표시됩니다.getElementId는 null 또는 undefined를 반환합니다.

PHP

if(count($_SESSION['players'],COUNT_RECURSIVE) == $_SESSION['savedPlayers']) 
{ 

    foreach($_SESSION['players'] as $key => $value){ 
    echo "Player #: . $key . ; Player Name: . $value . \n"; 
    echo "<input type=\"button\" name=\"" . $key . " \" id=\"" . $value . " \" value=\"Remove\" onclick=\"removePlayer(" . $value . ");\"> <br />"; 
    } 

    echo "Max number of Players"; 
} 

그리고 난 그냥 내가 제대로 전달 된 ID를 얻고 있는지 확인하기 위해 노력하고있어 때문에 내 자바 스크립트는 이제 기본이다. 나는 결국 목록에서 플레이어를 제거 할 jQuery를 추가 할 것이다. 당신의 온 클릭을 둘러싸고 잊고에 의해 - 따옴표 안에 $ 값을 동봉하지 않은 때문에

function removePlayer(test){  

    alert(test); 
    }; 

답변

3

그것이

echo "<input type=\"button\" name=\"" . $key . " \" id=\"" . $value . " \" value=\"Remove\" onclick=\"removePlayer('" . $value . "');\"> <br />"; 
+0

따옴표가 없으면 JavaScript는 정의되지 않은 전역 변수를 전달할 것으로 예상합니다. 따옴표를 사용하면'$ value'를 String으로 전달합니다. 이것은 당신이 원하는 것입니다. – ajm

+0

아, 알겠습니다. 내 실수를 지적 해 주셔서 감사합니다! 이제 작동합니다. : facepalm : – john

+0

이것을 잘하면 답변으로 표시하십시오. – swordfish

1

당신은 잘못된 자바 스크립트를 생성하고 시도 : 여기

내 자바 스크립트입니다 따옴표가있는 함수 호출. 은 $ 값이 실제 적절한 JS 있는지 확인하기 위해

$safe_value = json_encode($value); 
    echo <<<EOL 
Player #: $key Player Name: $value 
<input type="button" name="$key" id="$value" value="Remove" onclick="removePlayer($safe_value);"><br /> 
EOL; 

주 JSON 인코딩의 사용 : 당신은 당신의 코드에서 "이쑤시개 증후군을 기대어"의 심각 터미널 케이스를 가지고 감안할 때,이 같은 HTML을 출력하려고 데이터. 이것에 대해 HEREDOC을 사용하면 출력하는 텍스트의 인용 부호를 이스케이프 처리해야 할 필요가 없으며 변수를 직접 삽입 할 수 있으므로 처리됩니다.

관련 문제