Php 未使用AJAX将数据发布到$\u POST变量中

Php 未使用AJAX将数据发布到$\u POST变量中,php,ajax,Php,Ajax,我的一个脚本有问题。服务器使用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 '

我的一个脚本有问题。服务器使用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>";
}
?>

我尝试重现这个问题,它似乎对我有效,使用Chrome作为客户端,在服务器上使用PHP5.2。但是我注意到您没有将内容长度标题作为标题发送,这可能是问题所在。尝试添加:

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

当然,在发布之前,您还必须对pStr.value进行URL编码。正如nickb早些时候所说,为什么不使用jquery之类的框架库呢?

对于stackoverflow或其他编程站点来说,这可能是一个更好的问题。为什么要设置
pStr.value=“
,然后在
xmlhttp.send(“pStr=“+pStr.value)
中尝试使用该值?还有,您为什么不使用jQuery这样的工具来实现这一点?可能会让它更容易一些…虽然我想这种方法更轻一点。哦,孩子。与问题无关,但非常非常重要:您有一个巨大的安全漏洞,可能导致整个数据库被破坏。阅读SQL注入。此外,使用级联样式表将使代码更具可读性,更不用说减少需要传输的数据量。
var post = "pStr=" + pStr.value;
xmlhttp.setRequestHeader("Content-length",post.length);