Firefox form onsubmit aracılığıyla tetiklenir, ancak Internet Explorer'da çalışma ince ajax boş dize ile yanıt

1 Cevap php

Ajax boş bir dize ile yanıt şeklinde onsubmit Firefox aracılığıyla tetiklenir, ancak (yerine formu onsubmit bir Gönder düğmesi gönderildiği takdirde Firefox'ta çalışır, Internet Explorer ve Opera ince çalışırken .)

Ben sadece ajax GET ile php dosya tepki ile bir php dosyası arıyorum - echo $response = "something";. Daha sonra cevap değeri uyarılır. Ben IE'de çalışır ancak Firefox tepkisi (typeof() tarafından kontrol) boş bir dize alıyorum.

index.php, ajax-connect.js, cbb.js, cbb.php: kodu 4 dosyaları

index.php

<html> <head>  <script src="ajax-connect.js"></script> <script src="cbb.js"></script>

</head> <body>

<form name="condtactform1" method="get" action="" onSubmit="contactfunction()">
    <input type="submit" name="hissubmit" id="hissubmit" value="submit"> </form>

</body> </html>

ajax-connect.php

/* Create a new XMLHttpRequest object to talk to the Web server */

var xmlHttp = false;
/*@cc_on @*/
/*@
if (@_jscript_version >= 5)
    try {
       xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e2) {
            xmlHttp = false;
        }
    }
@end
@*/


if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
   xmlHttp = new XMLHttpRequest();
}

cbb.js

function contactfunction() {
   var url = "cbb.php";
   xmlHttp.open("GET", url, true);
   xmlHttp.onreadystatechange = updatecontact1;
   xmlHttp.send(null);
}

function updatecontact1() {
   if (xmlHttp.readyState == 4) {
       var responsae = xmlHttp.responseText;
       alert(responsae);
   }
}

cbb.php

<?php $response = "something"; echo $response; ?>

I ajax ile göndermek yerine formun Gönder düğmesini tetiklemek o zaman gibi firefox çalışıyor:

<form name="condtactform1" method="get" action="">
    <input type="submit" name="hissubmit" id="hissubmit" value="submit" onFocus="contactfunction()"> </form>

Herhangi bir fikir neden bu yapıyor?

Teşekkürler.

1 Cevap

Ben sorunun bir parçası size teslim normal eylemi durdurma olmadığını düşünüyorum. Her şekilde çalışıyor muhtemelen söylemek zor olsa da yürütülen son işlevin dönüş değerleri ele nasıl dayanmaktadır. Bir senin contactFunction için "return false" () eklemeyi deneyin;

Bu işe yaramazsa, ben oldukça çapraz tarayıcı farklılıkları hata ayıklama rota aşağı giderek daha AJAX (jQuery, MooTools, Prototype, vb) için bir javascript framework kullanmak güçlendirme biraz zaman yatırım istiyorum. Bir jQuery çözüm gibi görünecektir:

<form name="condtactform1" method="get" action="cbb-full.php">
    <input type="submit" name="hissubmit" id="hissubmit" value="submit">
</form>

<script type="text/javascript"
        src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
<script>

<script type="text/javascript">
    $(function() {
         $('#hissubmit').click( function() {
             $.get( 'cbb.php', function(response) {
                 alert(response);
             });
             return false;
         });
    });
</script>

Form javascript etkin değilse tam bir yanıt üretecek bir url göndermek gerektiğini unutmayın.