1

주 페이지 scada.php와 하위 페이지 site.php라는 두 개의 파일이 있습니다. 그런 다음 JS와 함께 검색

<?php 
$site = $_POST["sitename"]; 
echo "<title id='title'>".$site."</title>"; 
?> 

페이지에 표시하고 데이터베이스 쿼리에 사용할 :

<FORM action="site.php" method="post"> 
<li><td class="normal"><input type="image" name="sitename" 
value="Dublin" src="radiotower.jpg" alt="Dublin" title="Dublin"/> 
Dublin 
</td></li> 
</form> 

Site.php 여기 사이트의 이름에 액세스 : Scada.php이 같은 링크가 포함되어 있습니다 :

<script> 
var site = document.getElementById("title").innerHTML; 
document.getElementById("alert").innerHTML = "<h2>"+site+"</h2>"; 
</script> 

가 나는 확실히 그것은 단지 이름 ("더블린")가 아닌 HTML 제목 태그의 문자를 포함있어 할 사이트 이름의 문자열 길이를 확인하고, 길이는 6 자에서 올바른 것입니다.

Chrome에서 정상적으로 작동합니다. 모든 것이 부드럽고 예상대로 실행됩니다. IE와 Firefox에서는 "sitename"이 정의되지 않은 색인이라는 오류를 발행합니다. site.php의 전역 변수에 대해 vardump를 실행했는데 결과적으로 Chrome에서 3 개의 변수 (sitename_x, sitename_y 및 sitename)가 나타납니다. Firefox와 IE는 2 (sitename_x와 sitename_y) 만 표시하고 sitename은 누락됩니다.

파이어 폭스와 IE에서만 발생하는 $ _POST 문제를 검색 한 결과 유용한 정보를 찾지 못했습니다. 누군가가 제출 버튼을 누르지 않았다고 언급했으나 페이지와 상호 작용하는 유일한 방법은 입력 버튼을 누르는 것이기 때문에 문제는 아닙니다. 어디에서 변하기 쉬운 sitename는 분실되는 곳에인가 ??

편집 : 초기에는 조금 명확하지 않았습니다. 양식은 여러 입력을 포함, 그래서 이것은 더 정확 : 예상 값이 "더블린"인 경우

<FORM action="site.php" method="post"> 
<li><td class="normal"><input type="image" name="sitename" value="Dublin" 
src="radiotower.jpg" alt="Dublin" title="Dublin"/> 
Dublin 
</td></li> 
<li><td class="normal"><input type="image" name="sitename" value="Temple" 
src="radiotower.jpg" alt="Temple" title="Temple"/> 
Temple 
</td></li> 
</FORM> 
+1

이러한 값이 포함되어 있다고 생각하지 않습니다. 이미지 양식 입력에 그런 방식으로 의존 할 수 없습니다. 삶을 편하게 만들고, 양식에 을 추가하고 해당 변수 ($ _POST [ 'site'])를 사용하십시오 :) – niaccurshi

+1

niaccurshi - Chrome 's 행동은 실제로 표준을 따르지 않습니다. [이 게시물을 참조하십시오 (http://stackoverflow.com/questions/5681837/cant-find-an-input-type-image-value-in-post) –

답변

2

이미지 양식 입력은 클릭 한 x 및 y 좌표 만 리턴해야합니다. 나는 크롬은 이름과 값 쌍뿐만 아니라 좌표를 반환하여 표준 다음 여기가 아니라 잘못에 말을

사이트 이름에 대해 별도의 숨겨진 입력을 확인하고 당신은 같이 갈 수 있습니다 :

<form> 
    <input type="hidden" name="sitename" value="Dublin" /> 
    <input type="image" name="siteimg" src="radiotower.jpg" /> 
</form> 

편집 : 사용하여 jQuery를 문제가 아닌 경우, 당신이

<form action="" method="post" id="form"> 
    <div><img src="radiotower.jpg" alt="Dublin" title="Dublin" class="location" /></div> 
    <div><img src="radiotower.jpg" alt="Temple" title="Temple" class="location" /></div> 
    <div><input type="hidden" name="sitename" id="sitename" value="" /></div> 
</form> 

<script> 
$(function() { 
    $('.location').click(function() { 
     var site = $(this).attr('alt'); 
     $('#sitename').val(site); 

     $('#form').submit(); 
    }); 
}); 
</script> 

편집이 같은 접근 방식에 더 나을 거라고 생각 : jQuery를 포함하도록 HTML이 추가 :

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

+0

당신이 가진대로 하나의 항목에 대해 작동하지만, 내가 무엇을 내 페이지에는 약 18 개의 사이트 목록이 있습니다. 각각에 대해 별도의 양식을 만들어야합니까? 그것은 다소 다루기 힘든 것 같습니다. –

+0

성취하고자하는 바를 정확히 설명해 주시겠습니까?나는 더 간단한 해결책을 조언 할 수 있을지도 모른다. 편집 : 그냥 나와 함께 맨손으로 편집을 보았다 내 대답을 편집 할게 – Andy

+0

Scada.php 기본적으로 연결된 사이트 이름 가진 이미지 그리드입니다. 사용자가 하나를 클릭하면 site.php로 이동하여 해당 사이트에서 수집 한 데이터를 표시합니다 (사이트 상태는 on 또는 off 등). 결국 메인 그리드는 데이터베이스와 대화하여 사이트 이슈를 "생방송"으로 표시합니다 (예 : 새로운 데이터를 폴링하고 특정 사이트의 디스플레이 상자의 색상을 주황색으로 변경하거나 문제가있는 빨간색으로 변경).). 그것이 문제라면 radiotower.jpg를 제거 할 수 있습니다. 나는 그리드가 깔끔하게 보이게하고 wall-o-text처럼 보이지 않는다고 생각합니다. –

0

기분이 언짢아 입력 유형이 text해야 - 크롬 입력이 텍스트가있는 반면 실제로 인식하기에 충분 칼 수 있습니다 FF와 IE는 좀 더 속기 쉽고 변수를 설정하려고 시도조차하지 않습니다.

관련 문제