PHP和AJAX onclick重定向

时间:2012-08-15 00:34:20

标签: php html ajax

我正在使用Ajax从数据库填充下拉菜单,我的问题是我如何将其重新定向到一个页面以及我从数据库返回的CARD_ID?

现在,当我点击它时,它会在搜索栏中显示卡片名称,这是我想要的一部分,但现在我需要另一半重定向。我怎样才能做到这一点?

<?php
    $mysqli = mysqli_connect('localhost', 'root', '', 'draftdb');

if(mysqli_connect_errno()) 
{
    echo "Connection Failed: " . mysqli_connect_errno();
    exit();
}

    $str = $_GET['content'];
    if(strlen($str))
    {
        $sel = mysqli_query($mysqli, "select CARD_NAME, CARD_ID,CARD_TYPE from cards where CARD_NAME like '".trim($str)."%'");
        if(mysqli_num_rows($sel))
        {
            echo "<table border =\"0\" width=\"100%\">\n";
            if(mysqli_num_rows($sel))
            {
                echo "<script language=\"javascript\">box('1');</script>";
                while($row = mysqli_fetch_array($sel))
                {
                    $card_info = str_ireplace($str,"<b>".$str."</b>",($row['CARD_NAME']));
                    $card_type = str_ireplace($str,"<b>".$str."</b>",($row['CARD_TYPE']));

                    echo "<tr id=\"word".$row['CARD_ID']."\" onmouseover=\"highlight(1,'".$row['CARD_ID']."');\" onmouseout=\"highlight(0,'".$row['CARD_ID']."');\" onClick=\"display('".$row['CARD_NAME']."');\" >\n<td>".$card_info." ".$card_type."</td>\n</tr>\n";


                }
            }
            echo "</table>";
        }
    }
    else
    {
        echo "<script language=\"javascript\">box('0');</script>";
    }
?>  

javascript。

subject_id = '';
function handleHttpResponse() {
    if (http.readyState == 4) {
        if (subject_id != '') {
            document.getElementById(subject_id).innerHTML = http.responseText;
        }
    }
}
function getHTTPObject() {
    var xmlhttp;
    /*@cc_on
    @if (@_jscript_version >= 5)
        try {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
                xmlhttp = false;
            }
        }
    @else
    xmlhttp = false;
    @end @*/
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        try {
            xmlhttp = new XMLHttpRequest();
        } catch (e) {
            xmlhttp = false;
        }
    }
    return xmlhttp;
}
var http = getHTTPObject(); // We create the HTTP Object

function getScriptPage(div_id,content_id)
{
    subject_id = div_id;
    content = document.getElementById(content_id).value;
    http.open("GET", "script_page.php?content=" + escape(content), true);
    http.onreadystatechange = handleHttpResponse;
    http.send(null);
    if(content.length>0)
        box('1');
    else
        box('0');

}   

function highlight(action,id)
{
  if(action)    
    document.getElementById('word'+id).bgColor = "#C2B8F5";
  else
    document.getElementById('word'+id).bgColor = "#F8F8F8";
}
function display(word)
{
    document.getElementById('text_content').value = word;
    document.getElementById('box').style.display = 'none';
    document.getElementById('text_content').focus();
}
function box(act)
{
  if(act=='0')  
  {
    document.getElementById('box').style.display = 'none';

  }
  else
    document.getElementById('box').style.display = 'block';
}

html

<div class="ajax-div">

    <div class="searchbar">

     <input type="text" onKeyUp="getScriptPage('box','text_content')" id="text_content">

    </div>

    <div id="box"></div>
</div>

1 个答案:

答案 0 :(得分:2)

我不确定你要做什么,但似乎你想要这样的东西:

1-更改显示行的方式,以便将ID也发送到您的函数:

echo "<tr id=\"word".$row['CARD_ID']."\" onmouseover=\"highlight(1,'".$row['CARD_ID']."');\" onmouseout=\"highlight(0,'".$row['CARD_ID']."');\" 
   onClick=\"display('".$row['CARD_NAME']."', " . $row['CARD_ID'] . ");\" >\n<td>".$card_info." ".$card_type."</td>\n</tr>\n";
                                            ^^^^^^^^^^^^^^^^^^^^^^^^^

2-将display功能更改为重定向

function display(word, id)
{
    // document.getElementById('text_content').value = word;
    // document.getElementById('box').style.display = 'none';
    // document.getElementById('text_content').focus();
    window.location.href = "some_page.php?card_id=" + id;
}

我已经注释掉了原始行,因为在你要离开的页面上做东西似乎没什么意义。如果这是您正在寻找的解决方案,您还可以完全删除word参数。