2013-04-30 1 views
1

php에서 제대로 작동하는 가입 양식을 작성했습니다. 페이지 새로 고침을 피하기 위해 jquery를 적용했습니다. usig는 내가 가입 유형을 변경할 수 있습니다 잘 작동하지만, JQuery와 여기에 작동하지 PHP는 때Jquery POST가 입력 유형 체크 박스와 함께 작동하지 않습니다.

는 HTML 양식

<input name="newsletter" type="checkbox" id="checkbox" value="true"> 
<input name="offer" type="checkbox" id="checkbox" value="true"> 

는 PHP

<?php 
if(isset($_POST['newsletter']) && isset($_POST['newsletter'])==true){ 
    $newsletter = true; 
} else { 
    $newsletter = false; 
} 

if(isset($_POST['offer']) && isset($_POST['offer'])==true){ 
    $offer = true; 
} else { 
    $offer = false; 
} 

echo 'type1='.$newsletter;  
echo 'type2='.$offer; 

$query = "UPDATE $table SET type1='$newsletter', type2='$offer' WHERE id=$id"; 
$result = mysqli_query($connection, $query) or trigger_error(mysqli_error($connection), E_USER_ERROR); 

jQuery를

var newsletter = false; 
    var offer = false; 
    var newsletterval = $("input[name='newsletter']").is(':checked'); 
    var offerval = $("input[name='offer']").is(':checked'); 

    if(newsletterval){ 
     newsletter=true; 
    }; 

    if(offerval){ 
     offer=true; 
    }; 

    $.post('../../subscribe.php', {newsletter:newsletter, offer:offer}, function(data){ 
     alert(data);    
    }); 

그것은 아무것도 변경 doesent 그리고 나는 체크 박스가 무엇이든 관계없이 게시물 데이터에서 type1=1type2=1으로 경고를받습니다. 또는 선택을 취소하십시오.

jquery를 사용하여이를 수행 할 수있는 방법을 확인하고 제안하십시오.

감사

+0

변수가'isset ($ _ POST [ 'offer']) == true'로 설정되어있는 경우에만 확인합니다. '$ _POST [ 'offer'] == 1' – x4rf41

+0

'isset ($ _ POST [ 'offer'])'값이'true' 또는'false'인지 확인하는 방법 –

+0

if (isset ($ _ POST [ 'newsletter ']) && $ _POST ['newsletter '] == true) – chepe263

답변

1

난 당신이 이런 식으로 뭔가를하려고하는 것 같아요 :

if(newsletterval){ 
    // use the string representation 'true' rather than a boolean value 
    newsletter='true'; 
}; 

if(offerval){ 
    // use the string representation 'true' rather than a boolean value 
    offer='true'; 
}; 

$.post('../../subscribe.php', {newsletter:newsletter, offer:offer}, function(data){ 
    alert(data);    
}); 

PHP 코드 :

<?php 

if(isset($_POST['newsletter']) 
    // Check the value of `$POST['newsletter']` rather than using isset() twice 
    && $_POST['newsletter'] === 'true'){ 
    $newsletter = true; 
} 

... 문자열로

+0

감사합니다. –

+0

멋지다! 당신은 환영합니다. :) – hek2mgl

1

HTTP 전송 요청 때문에 Javascript를 true을 ! = PHP의 true해야합니다. PHP 사실 현재의 코드 값의 문자열을 동일시 하겠지만 PHP 'true' 또는 'false'

에 문자열을 사용하면 항상 발견하고 그래서 당신은 항상 당신의 경우의 truthy 부분을 실행하는 부울 true을 찾고 블록 else 블록

+0

설명 주셔서 감사합니다. –

관련 문제