2017-02-06 1 views
1

Mein Problem ist folgendes, ich habe einen Eingabetext erstellt und eine Schaltfläche wie in diesem Bild: enter image description hereJquery/Ajax-Code nicht auf Firefox arbeiten, aber auf anderen Browser funktioniert

Das System ist sehr einfach, Sie geben eine Zahl ein und Sie drücken, um diese Position mit ajax in die Datenbank zu setzen. Ich habe diesen Code mit Chrome, Internet Explorer 9 und Edge und Firefox (51.0.1 (32-Bit)) versucht, aber es scheint, dass auf Firefox der Code nicht funktioniert. Was könnte das Problem sein? Hier ist der Javascript-Code:

<script type="text/javascript"> 
         $(document).ready(function() { 

          $("#set_image_pos_btn<?php echo $image->id; ?>").click(function() { 
           event.preventDefault(); 

           var image_id = <?php echo $image->id; ?>; 
           var image_position = $("#image_position_value<?php echo $image->id; ?>").val(); 

           $.ajax({ 
            url: '<?php echo base_url("image/pozitie"); ?>', 
            data: {id: image_id, position: image_position}, 
            type: 'POST', 
            success: function (data) { 
             $("#image_position_value<?php echo $image->id; ?>").html(data); 
            } 
           }); 

          }); 

         }); 
        </script> 

Und hier ist der PHP-Code:

function pozitie() { 
    $id = $this->input->post('id'); 
    $position = $this->input->post('position'); 

    if(isset($id)) { 

     $update = $this->image_model->_update($id, array('position' => $position)); 

     if($update) { 
      $image = $this->image_model->get_where_row('id', $id); 
      echo $image->position; 
     } else { 
      echo "eroare"; 
     } 


    } 
} 
+2

Überprüfen Sie die Firefox-Konsole auf Fehler. Könnte ein Sicherheitsproblem sein. – jhmckimm

+3

Firefox bietet 'event' nicht als globale Variable an. Es wird als Argument an die Event-Handler-Funktion übergeben. Wenn Sie jQuery verwenden, sollten Sie das globale 'Ereignis' trotzdem nicht verwenden (es sei denn, Sie * haben wirklich einen guten Grund). – Pointy

+0

Reference: wird das Ereignis nicht \t \t m.event.dispatch \t m.event.add/r.handle – xttrust

Antwort

2

die E-Parameter auf das Click-Ereignis hinzufügen, dann wird es funktionieren.

click(function (e) { 

Auch: Sie sollten sich um die Fehlerbehandlung kümmern.

var jqxhr = $.ajax("example.php") 
.done(function() { 
    alert("success"); 
}) 
.fail(function() { 
    alert("error"); 
}) 
.always(function() { 
    alert("complete"); 
}); 
+0

try console.log in firefox definiert, um zu sehen, ob das Click-Ereignis ausgelöst wird. Je nach verwendeter jQuery-Version können Sie versuchen, .on ('click', function (e) {...}) zu verwenden; Ich denke, es funktioniert seit jQuery 2, aber ich bin mir nicht sicher. Probieren Sie es aus, wenn das Klickereignis in Firefox nicht ausgelöst wird. –

Verwandte Themen