2013-04-07 72 views
0

這是使用PHP和AJAX從一個DIV發送獲取的數據到另一個

更新的代碼

的index.php

<html> 
<head> 
<script language="javascript"> 
    function showresult() 
    { 
    var product_name = document.getElementById("searchval").value; 
    if(window.XMLHttpRequest) 
    { 
    XMLHttpRequestObject = new XMLHttpRequest(); 
    } 
    else if(window.ActiveXObject) 
    { 
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    XMLHttpRequestObject.open("POST", "search.php", true); 
    XMLHttpRequestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");      
    XMLHttpRequestObject.send("search_res=" + product_name); 
    XMLHttpRequestObject.onreadystatechange = function() 
    { 
     if(XMLHttpRequestObject.readyState == 4) 
     { 
      if(XMLHttpRequestObject.status == 200) 
      { 
       document.getElementById("displayresult").innerHTML = XMLHttpRequestObject.responseText; 
      } 
     } 

    } 
    } 
function throwval(obj) 
{ 
    var sent_id = obj.id; 
var v = document.getElementById(sent_id).value; 
    var newp = document.createElement("p");  
var text = document.createTextNode(v); 
newp.appendChild(text); 
document.getElementById("getselected").appendChild(newp); 
} 
function sendvalues() 
{ 

var div_val = document.getElementById("getselected"); 
var str="|"; 
    for (i=0; i < div_val.getElementsByTagName("p").length; i++) 
    { 
    var paragraphs = div_val.getElementsByTagName("p"); 
    var pvalues = paragraphs.item(i).innerHTML; 
str = str + pvalues + "|"; 
} 
window.location="send_data.php?str="+str; 
} 

    </script> 
    </head> 
    <body> 
    <form method="post" name ="searchform" id="idsearchform" > 
    <input type="text" name="search" id="searchval"/> 
    <input type="button" name="starts" value="startsearch" onclick="showresult()"/> 
    </form> 
    <div id="displayresult"> 

    </div> 
    <div id="getselected"> 
    Selected : 
    </div> 
    <form name="sendf" method="post" action="send_data.php"> 
    <input type="button" id="sendtophp" name="sendingval" value="next step" onclick="sendvalues()"> 
    </form> 
    </body> 
    </html> 

的search.php

從MySQL數據庫中檢索名稱代碼
$mysql_con = mysql_connect("localhost","root","") or die("Could not connect".mysql_error()); 
$mysql_db = mysql_select_db("test",$mysql_con) or die("Unable to select db ".mysql_error()); 
$keyword = mysql_real_escape_string($_POST['search_res']); 
$search_q = mysql_query("Select * from products where pname like '%$keyword%'"); 
if(mysql_num_rows($search_q)!=0) 
{ 
    while($result = mysql_fetch_array($search_q)) 
    { 
     $name = $result['pname']; 
     echo "<input type='button' name='resultname' id='$productid' value='$name' onclick='throwval(this)'><br/>"; 
    } 
} 

send_data.php

<?php 
$url = $_SERVER['REQUEST_URI']; 
$exploded = explode('|',$url,-1); 
$number = count($exploded); 
?> 
<html> 
<body> 
<table align="center" border="1"> 
<form method="post" action="send_data.php"> 
<tr> 
<td>Name</td> 
<td>Quantity</td> 
</tr> 
<?php 
for($i=1;$i<$number;$i++) 
{ 
    $p_name = $exploded[$i]; 
?> 
<tr> 
<td><input type="text" name="p_names" value="<?php echo $p_name; ?>" /></td> 
<td><input type="text" name="quantity" /></td> 
</tr> 
<?php 
} 
?> 
<tr> 
<td></td> 
<td><input type="submit" name="send_request" value="Submit" /></td> 
</tr> 
</form> 
</table> 
</body> 
</html> 

我想發送選定的結果到另一個div從哪裏我可以發送選定的值到另一個文件使用PHP或JavaScript(沒有jQuery)。 我該怎麼做。

更新:我已成功地發送數據從一個到另一個使用appendchild。我現在的問題是,我添加的值被添加爲單個字符串。我希望每個值都是獨立的,這樣我就可以將它發送到一個php(類似購物車)。有任何想法嗎? 謝謝

我設法發送單獨的值使用javascript通過創建一個新的p屬性爲每個值被選中。我現在可以在send_data.php中顯示值,但我不知道如何通過一個窗體發送for循環生成的多個值。有任何想法嗎?

+0

首先,mysql_函數被棄用,看看PDO。並在頁面加載後更改div的內容,則需要使用JavaScript。 – void 2013-04-07 19:55:11

+0

檢查出http://stackoverflow.com/questions/8567114/how-to-make-an-ajax-call-without-jquery - 是的,請刪除mysql_query的東西。 – herrjeh42 2013-04-07 20:41:46

+0

我將不得不查找PDO,一旦我做了我肯定會更新它,但現在我需要發送所需的值到另一個使用javascript,我沒有能夠做到的div。我嘗試使用innerHTML將檢索到的值發送到另一個div,但是當我再次搜索時,所選值將消失,並且只有在搜索結果不止一個時纔會選擇第一個值。我怎樣才能做到這一點? @ jamie0726 – 2013-04-08 13:15:24

回答

0

我知道您正在嘗試構建搜索表單。用戶可以進行多次搜索。用戶可以從每個搜索請求中選擇一個結果。每個選定的結果存儲在某個地方,一旦用戶完成搜索和選擇,就會發送到另一個php腳本。

我會在HTML中添加一個隱藏字段,並將結果不僅添加到DIV中,而且還添加到隱藏字段的值中。假設用戶選擇了productId 1,3,5,隱藏字段的值將是「1,2,3」。在PHP中,您可以分解字符串並將每個元素轉換爲int類型,然後根據需要執行任何操作。

此方法假設用戶在完成搜索和選擇後單擊某種「我完成按鈕」,以便您可以將帶有隱藏字段的表單提交給服務器。

另一種方法是在用戶選擇一個值後立即使用Ajax請求將所選值發送回服務器。

+0

感謝您的幫助。我使用爆炸方法來獲取多個值。只剩下一個問題 – 2013-04-10 19:19:00

+0

假設您想爲$ exploded的每個元素打印一個選擇框。添加到for循環: ... $ p_name = $ exploded [$ i]; print「'; ... 注意p_names []構造,這是一個小技巧來定義一個數組所以當用戶點擊數值爲3的複選框和數值爲4的複選框時,在提交表單後,p_names將是包含3和4的數組。 – herrjeh42 2013-04-10 23:23:28

+0

我試過這種方法,並將p_names和quantity都更改爲p_names []和數量[]分別但是我保持輸入類型爲文本,然後我用print_r來獲取提交的值 現在它工作正常了,謝謝你幫助我 – 2013-04-11 07:13:49

相關問題