2011-03-17 6 views
0
<form action="<?php bloginfo('url'); ?>/color-search/" method="post" accept-charset="utf-8" name="color-search"> 
     <select name="color-choice" id="color-choice"> 
      <option value="">Choose a Color</option> 
      <option value="Black">Black</option> 
      <option value="Blue">Blue</option> 
      <option value="Brown">Brown</option> 
      <option value="Gray">Gray</option> 
      <option value="Green">Green</option> 
      <option value="Orange">Orange</option> 
      <option value="Purple">Purple</option> 
      <option value="Red">Red</option> 
      <option value="Pink">Pink</option> 
      <option value="White">White</option> 
     </select> 
    </form> 

    <script type="text/javascript"> 
    $("#color-choice").change(function() { 
     $(this).closest("form").submit(); 
    }); 
    </script> 

이 코드는 내 사이드 ​​바에서 렌더링됩니다. 드롭 다운이 처음 변경되면 브라우저가 양식을 http://myurl/color-search/에 올바르게 게시하고 해당 페이지의 코드가 결과를 올바르게 렌더링합니다.일치하지 않는 자바 스크립트 양식 제출

if(!empty($_POST['color-choice'])) { 
    $pageColor = $_POST['color-choice']; 
} 

합병증이 있습니까? 결과 페이지 (http : // myurl/color-search)에는 정확히 같은 양식이 있습니다. 드롭 다운을 변경하면 제출되지만 PHP는 POST 데이터를 가져 오지 않습니다.

그래서 질문은 다음과 같습니다. 다른 페이지에서 게시 할 때와 비교하여 자체 URL로 다시 게시 할 때 왜이 양식이 올바르게 POST되지 않습니까?

의미가 없습니다.

P. 양식의 jQuery 처리가 약간 무거 우다. 나는 원래 onchange = "this.form.submit();"을 사용했다. 그러나 그것이 똑같이 행동 할 것인지를보기 위해 바 꾸었습니다. 같은 오류가 계속 발생했습니다. 이 표시 될 수 있도록 사전에

감사합니다 :) Clif

+0

여기서 제공 한 제한된 코드에서 잘못된 것이 보이지 않습니다. PHP를 게시 할 수도 있습니다. 귀하의 컬러 검색 페이지에있는 PHP 코드가 어딘가에 $ _POST를 플러시하고 있다고 생각합니다. – Treffynnon

+0

필자가 나열한 PHP는 페이지 상단에 있으며 파일의 $ _POST에 대한 유일한 참조입니다. 방금 GET을 사용하기 위해/PHP를 변경했으며 모든 시나리오에서 잘 작동합니다. 그래서 이상한! – clifgriffin

+0

힌트 : 폼에 ID를 넣고 submit을 호출하는 것이 더 좋을 것입니다 :'$ ('frmColors') submit()' – Iogui

답변

0

로렌스 쉐론이이 솔루션으로 이끌어 준 것에 대해 감사드립니다.

이 코드를 작성하지 않았으므로 드롭 다운 양식이 한 곳에서만 포함되었다고 잘못 가정했습니다. 실제로 두 개의 별도 사이드 바 템플릿 파일이 있었고 그 중 하나는 실제 대상 페이지에서 사용되었고 URL에 오타가 포함되어있었습니다. (단수 대신 복수형)

이 문제를 해결 한 후에 작업이 시작되었습니다.

분명히 WordPress가 오타를 무시하고 올바른 대상 페이지로 리디렉션했지만 $_POST 데이터가 손실되었습니다.

거짓 경보에 대해 죄송합니다. :)

0

는 또한 $ pageColor 에코해야한다. (이미이 작업을 수행했지만 코드에서 볼 수 없습니다.)

+0

예, 페이지의 나머지 부분은이 정보를 사용합니다. – clifgriffin

관련 문제