1

私のスクリプトの 1 つに問題があります。サーバーはphpで実行されており、AJAXを使用してデータを投稿しています。これが私のスクリプトです。

PHP スクリプト:

<?php

include './connConf.php';

if (isset($_POST['pStr'])){
    $preStr=$_POST['pStr'];
    $query="SELECT * FROM advisory WHERE projname in (SELECT projname FROM advisorydata WHERE prefixStr LIKE '%$preStr')";
    $result=mysql_query($query);
    $num=mysql_numrows($result);
    if ($num > 0){
        echo "<font style=\"font-size:12px\" color=\"#FF6820\" face=\"Century Gothic\"><b>Search Result :</b></font><br><br>";
        for ($x=0;$x<$num;$x+=1){
            echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Project Name:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"projname")."</b></font><br>";
            echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">APMS ID:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"apmsid")."</b></font><br>";
            echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Prefix/es:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"projprefix")."</b></font><br>";
            echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Usage Type:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"usagetype")."</b></font><br>";
            echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Rate:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"projrate")."</b></font><br>";
            echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Offer Details:&nbsp&nbsp&nbsp</font><font style=\"font-size:11px\" color=\"#C0FFFF\" face=\"Century Gothic\"><b>".mysql_result($result,$x,"offerdetails")."</b></font><br><br>";
        }
    }else{
        echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">No results found ...</font>";
    }
}else{
    echo "<font style=\"font-size:12px\" color=\"#FFFFFF\" face=\"Century Gothic\">Problems encountered while processing the data ...</font>";
}
?>

JS スクリプト:

function QueryPrefix()
{
    var xmlhttp;
    var pStr = document.getElementById('Editbox2');
    var htmlHolder = document.getElementById('Html1');
    var butStr = document.getElementById('Button1');

    if (pStr.value.length == 0){
        alert("Please enter a value on the box provided!");
        return; 
    }
    pStr.value="";

    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4)
            {
                htmlHolder.innerHTML=xmlhttp.responseText;
                butStr.disabled=false;
            }
    }
    butStr.disabled=true;

    xmlhttp.open("POST","searchutype.php",false);
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlhttp.send("pStr=" + pStr.value);
}
4

1 に答える 1

0

問題を再現しようとしましたが、クライアントとして Chrome を使用し、サーバーで PHP 5.2 を使用して、うまくいくようです。しかし、Content-Length ヘッダーをヘッダーとして送信していないことに気付きました。これが問題である可能性があります。追加してみてください:

var post = "pStr=" + pStr.value;
xmlhttp.setRequestHeader("Content-length",post.length);

もちろん、投稿する前に pStr.value も URL エンコードする必要があります。前に nickb が言ったように、jquery などのフレームワークのライブラリを使用しないのはなぜですか?

于 2012-06-01T02:56:06.000 に答える