onlys durumu 3 alır XMLHttpRequest

4 Cevap php

Ben bir arama kutusu ve bir sonuç kutusu ile basit bir arama formu var.

When I type a search word a request is created like: http://www.site.com/php_handler.php?s=hello In the php script and a result is given back to the script this way:

<?php return $s; ?>

Sorun benim htmlrequest artık 4 almaz readyState 3 durur olduğunu.

Javascript, bu gibi görünüyor:

var xmlhttp = sajax_init_object();

function sajax_init_object() {
    	var A;
    	try {
    		A=new ActiveXObject("Msxml2.XMLHTTP");
    	} catch (e) {
    		try {
    			A=new ActiveXObject("Microsoft.XMLHTTP");
    		} catch (oc) {
    			A=null;
    		}
    	}
    	if(!A && typeof XMLHttpRequest != "undefined")
    		A = new XMLHttpRequest();
    	if (!A)
    		sajax_debug("Could not create connection object.");
    	return A;
    }
function getSearchItem()
  {
    	gs=document.forms.mainform.resultsfield;
    	var searchword=document.forms.mainform.searchform.value;
    	if (searchword.length>=3)
    	{
    	setWaitCursor();
    	clearResults();
    	var uri = "http://site.com/ajax_handler.php?s="+searchword;
    	console.log(uri);
    	xmlhttp.open("GET", uri, true);
    	xmlhttp.onreadystatechange=function() 
    	{

        if (xmlhttp.readyState==4) {
          processResults(xmlhttp.responseText);
    	  		removeWaitCursor();
        }else{
    		console.log(xmlhttp.readyState);
    	}
      }
      xmlhttp.send(null);
    }
    else
    {
      alert("please add at least 3 characters ."); 
    }    
  }

O 3 durur neden birisi bana söyleyebilir misiniz?

edit: burada da php kodu:

<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

session_start();


//include main file
require_once($_SESSION["FILEROOT"] . "xsite/init.php");

//check if formulier is posted

$zoekterm = C_GPC::getGETVar("s");
$s="";

if ($zoekterm != "") {
    $query="SELECT number,name,city,zib,zip_annex FROM articles WHERE version='edit' AND (naam LIKE '%$school%' OR brinnummer='$school')  ORDER BY name";
    if ($rs=C_DB::fetchRecordSet($query)) {
        while ($row=C_DB::fetchRow($rs)) {
            if ($row["plaats"]!="") {
                $s.=$row["name"].", ".$row["city"]."|".$row["number"]."\n";
            } else {
                $s.=$row["name"].", ".$row["zip"].$row["zip_annex"]."|".$row["number"]."\n";
            }
        }
    }
}

return $s;


?>

edit:

I missed a semicolon in my php script and now the ready state only gets to 2

edit:

The problem is even different. It gets to 4 but it doesn't show the result text.

4 Cevap

1> Cache-Control göndermek etmeyin: = 0 post-check = 0 önceden kontrol edin. Bunlar yaptıklarını ne düşündüklerini yapmıyoruz, onlar tamamen gereksiz demektir.

Kapat başlık: 2> Sizin AJAX sonuçları sayfasında bir Content-Length veya Bağlantı göndermek gerekiyor.

3> Bir bayat önbellek girdisi bakmıyoruz sağlamak için istek URL rastgele eklemeyi deneyin.

Eğer PHP sayfasında çıktı biten ... Örneğin, kullanmak durumunda

ob_start();

Siz de gibi, çıkış yıkama yapıyorsanız ...

ob_end_flush();

ReadyState 3 => Bazı veriler alındıktan

ReadyState 4 => Tüm veriler alındıktan

Belki XMLHTTPRequest nesne hala bazı veri bekliyor.

Eğer emin php script doğru biter mi?

Içerik-uzunluk iyi mi?

, Iki seçeneğiniz vardır bu hata ayıklama [Bir GET kullanarak bu yana] tarayıcısına URL'yi doğrudan yazın ve ne olduğunu görmek için.

VEYA

Bu tür Fiddler gibi bir araç kullanın ve tam olarak XMLHttpRequest ile neler olduğunu görebilirsiniz