Elbette bir aptalca bir hata, ama ben göremiyorum

3 Cevap php

Ben (büyük ölçüde basitleştirilmiş) bir form var:

<form action='http://example.com/' method='post' name='event_form'>
  <input type='text' name='foo' value='3'/>
  <input type='submit' name='event_submit' value='Edit'/>
</form>

Ve ben formu işlemek için bir sınıf "EventForm" var. Ana yöntem, süreç () bu gibi görünüyor:

public function process($submitname=false){
    $success=false;
    if ($submitname && isset($_POST[$submitname])){ //PROBLEM:  isset($_POST[$submitname] is always FALSE for some reason
        if($success=$this->ruler->validate()){//check that dependancies are honoured and data types are correct
            if($success=$this->map_fields()){//divide input data into Event, Schedule_Element and Temporal_Expression(s)
                $success=$this->eventholder->save();
            }
        }
    } else {//get the record from the db based on event_id or schedule_element_id
        foreach($this->gets as $var){//list of acceptable $_GET keys
            if(isset($_GET[$var])){
                if($success= $this->__set($var,$_GET[$var])) break;
            }
        }
    }
    $this->action=(empty($this->eventholder->event_id))? ADD : EDIT;
    return $success;
}

Form gönderildiğinde, bu olur: $form->process('event_submit'); nedense olsa, isset($_POST['event_submit']) her zaman YANLIŞ olarak değerlendirilir. Neden herkes görebilir miyim?

ETA: önerileri ile çalıştıktan sonra, bu JQuery.validate () form gönderildiğinde beklenmedik bir etkiye sahip olduğu görülmektedir. Tüm alanlar göndermek düğmesi hariç teslim edilir. Bu, bu JQuery arıza gibi görünüyor:

$("form[name='event_form']").validate({
    submitHandler: function(form) {
        form.submit();
    }
}};

Emin olmak için nasıl Herhangi bir düşünce gönderme düğmesi değeri gönderdi alır?

3 Cevap

Bu için JQuery değiştirin:

$("form[name='event_form']").validate({
    submitHandler: function(form) {
        $("form[name='event_form'] input[name='event_submit']").click()
    }
}};

$ _POST dizi üzerinde bir print_r yapmak ve teslim olmak ne olduğunu görmek - bu çıkış bütün dizi örneğin gerektiği

 print_r($_POST);

Ben daha basit bir PHP dosyasına kodunuzu patlak verdi:

<?php
function process($submitname=false){
echo 'erg<br>';
  $success=false;
  if ($submitname && isset($_POST[$submitname])){ //PROBLEM:  isset($_POST[$submitname] is always FALSE for some reason
    echo 'bwah';
  }
}

process("event_submit");
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="event_form">
  <input type="text" name="foo"/>
  <input type="submit" name="event_submit" value="Edit"/>
</form>

Beklendiği gibi görüntülenir "erg" ve "bwah". Sınıf aslında bunun için "event_submit" geçiyoruz ki düzgün örneği, ve bunu okumak için bir şans önce kodda diğer bazı parça $ _POST silip olmadığı ediliyor emin olun.