2009-08-28 6 views
0

이것은 이전 질문의 연속입니다. 방금 오픈 ID없이 그날 로그인 했으므로 계정에 로그인하고 추가로 편집하는 방법을 모르겠습니다. 그래서 나는 새로운 Open ID를 사용하는 계정을 만들고 이것을 새로운 질문으로 게시했습니다.변수 값이 jQuery의 클릭 기능에서 한번 변경됩니다.

이제 이와 같은 코드가 있습니다. onclick 이벤트 내에서 값은 $ selectedId에 올바르게 저장됩니다. 그러나 URL에서 그 값을 전달하려고하면 올바른 값을 얻지 못합니다. for 루프의 마지막 값이 전달됩니다.

<script type="text/javascript"> 

$(document).ready(function(){ 

<?php foreach ($Forms as $r): ?> 

    $("<li><a id='<?=$r['Form']['id'];?>' data-attr='Formentries' href='#'><?=$r['Form']['name']?></a></li>").appendTo("#headers").click(function() { 

    <?php $selectedFormId=$r['Form']['id'];?> 

    alert("selId: "+<?php echo $selectedFormId;?>); //here the selected id is alerted 
    }); 
alert("outside the loop"+<?php echo $selectedFormId;?>); //here the last value in the loop is alerted 
}); 

한 번 클릭 기능에서, $ selectedFormId의 값은 배열의 마지막 값으로 변경합니다. 누군가 이걸로 나를 도울 수 있습니까?

실제로 내가 달성하고자하는 것은 링크 집합으로 양식 집합을 나열하고 링크를 선택하면 해당 ID를 PHP 변수에 저장하려고합니다. 나는 양식을 선택 후 특히 내가 통과 할 수 있도록 내가

<a href="localhost/FormBuilder/reports/export/<?php echo $selectedFormId;?>" class="thickbox button" title= "Export" >Export</a> . 

그래서 내가 거기에서 ID를 원하는 다른 링크를 통해 양식의 항목을 수출 할 수있는 옵션이 PHP는 변수 사촌에 저장하려면 컨트롤러의 내보내기 기능으로 가져옵니다. 는 또한

formid=$(this).attr("id"); 

로 자바 스크립트 변수에 선택한 ID를 얻을 수 있지만 컨트롤러에서 내보내기 기능이 값을 전달하는 방법을 모르겠어요.

+4

이러한 종류의 코드가 정확하게 서버 측 코드를 클라이언트 측 코드와 분리하는 이유입니다. 나는 그것을 읽는 것이 어려워서 무엇이 자바 스크립트이고 PHP는 무엇인지 말하고 있습니다. – scragar

+0

당신은 이것을 어떻게하려합니다. 적어도 나에게는 분명하지 않다 ... – stefita

+0

당신은 무엇을 성취하고자 하는가? –

답변

0

지금까지 보았 듯이 반복에서 각 루프 안에 $ selectedFormId를 설정하므로 click 이벤트가 발생하는 경우에만 할당 코드가 설정됩니다.

따라서 논리적으로 루프를 종료하면 $ selectedFormId가 배열의 마지막 항목이됩니다. 과제 주위에 조건을 두겠다는 의미입니까? 서버 측 코드가 관계없이 실행된다는 것을 잊지 마십시오! 클라이언트 측 조건이나 종료에 대해서는 신경 쓰지 않습니다!

if (something){ 
    <?php $selectedFormId=$r['Form']['id'];?> 
} 

위의 설명을 다시 말하면 코드 분리를 시도해야합니다. 위의 내용은 실제로 tag soup입니다!

0

질문을 잘 이해했는지 모르겠지만 $ selectedFormId 값이 루프 내에 설정되어 있으므로 루프가 실행될 때마다 변수가 설정되고 루프가 완료되면 $ selectedFormId가 마지막으로 처리됩니다 값. 루프 밖에서 설정해야한다고 생각합니다.

+0

글쎄, 난 루프 내에서만 ID 값을 가질 것입니다 .. –

0

블록 내부에 선언 할 때 외부에서 사용할 수 없으므로 선언하십시오.

블록 앞에 $(document).ready 블록을 선언하거나이 블록 내부에서 사용을 끝내야합니다.

0

당신은 클라이언트와 서버 측 코드를 혼합하고 있습니다 - 당신이 작성한 코드는 실제로 클라이언트 측에서 PHP 변수를 서버 측에서 설정하도록 기대하는 것처럼 보입니다. 작동이 불가능합니다.

클릭 이벤트가 클라이언트 쪽 변수를 설정하도록하십시오. 그런 다음 내보내기 링크에서 onclick을 설정하여 URL을 구성하고 로컬에 저장된 변수 값을 기반으로 URL로 리디렉션하십시오.

아마도 이것이 최선의 해결책은 아니지만 하나의 옵션 일 것입니다.

+0

URL을 구성하고 로컬 저장된 변수 값을 기반으로 리디렉션하려면 내보내기 링크에 onclick을 설정합니다 .-- 어떻게 로컬로 저장 자바 스크립트 변수를 사용하는 내 수출 링크 URL에? 그게 내가하고 싶은 일이야. –

관련 문제