2013-04-04 137 views
0

我想改变:从正规阿贾克斯jQuery的阿贾克斯

function showUser(str) 
{ 
    if (str=="") 
    { 
     document.getElementById("txtHint").innerHTML=""; 
     return; 
    } 
    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 && xmlhttp.status==200) 
     { 
     document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("GET","get_content.php?q="+str,true); 
    xmlhttp.send(); 
} 

到jQuery的阿贾克斯。现在,我有以下实现的是:

$('#menurow').change(function() { 
    $.ajax({ 
     type: "GET", 
     url: "get_content.php?q="+str,true, 
     data: $('#txtHint').innerHTML(), 
     success: function(data) { 
      alert('test'); 
     } 
    }) 
}); 

当我出去试试这个代码,浏览器口口声声说未捕获的SyntaxError:意外的标识上的数据:$('#txtHint').innerHTML()。有人知道如何解决这个问题吗?这是HTML/PHP代码:

<form> 
<select name="menurow" id="#menurow"> 
<option value ="select">Selecteer een menu</option> 
<?php 
    $sql= mysql_query("SELECT * FROM Menu") or die(mysql_error()); 

    while ($row = mysql_fetch_array($sql)) 
    { 
     ?><option data="menu" value="<?php echo $row['menu_id']; ?>"><?php echo $row['menu_name']; ?></option> 
     <?php 
     $subsql= mysql_query("SELECT * FROM SubMenu INNER JOIN Menu WHERE SubMenu.menu_id = Menu.menu_id AND Menu.Menu_id = ".$row['menu_id']."") or die(mysql_error()); 
     while ($subrow = mysql_fetch_array($subsql)) 
     { 
     ?><option data="submenu" value="<?php echo $subrow['submenu_id']; ?>"><?php echo "--".$subrow['submenu_name']; ?></option> 
     <?php 
     } 
    } 
?> 
</select> 
</form> 
<div id="txtHint"></div> 

在此先感谢

感谢您的帮助球员。现在我有它如下:

$('.menurow').change(function(str) { 
    $.ajax({ 
     type: "GET", 
     url: "get_content.php?q="+str, 
     success: function(data) { 
      $('#txtHint').html(data); 
         tinyMCE.init({ 
      theme : "advanced", 
      mode : "textareas" 
     }); 
     } 
    }) 
}); 

我怎样才能得到它的形式的数据?我在函数中声明了str。正因为如此,它显示出空的领域。我怎样才能填满他们的数据?

+0

你有一个语法错误在这里:'url:“get_content.php?q =”+ str,true,'因为'true',它不是一个有效的对象。 – 2013-04-04 14:52:46

+0

标记是怎样的? '$('#txtHint')。innerHTML()'包含什么? – David 2013-04-04 14:53:25

回答

0

的数据需要的对象类型:

data: { hint: $('#txtHint').innerHTML() }

但看到这是不是你的实际意图,数据属性是要发送到服务器的数据。它看起来像你想把输出在#txtHint。 所以,你需要这样做:

$('#menurow').change(function() { 
    $.ajax({ 
     type: "GET", 
     url: "get_content.php?q="+str, 
     success: function(data) { 
      $('#txtHint').html(data); 
     } 
    }) 
}); 
+0

你仍然有问题的语法错误。 'true'会导致语法错误。 – 2013-04-04 14:58:31

+0

谢谢。编辑。 – errieman 2013-04-04 14:59:45

+0

它现在工作,谢谢你们! – user2237168 2013-04-04 18:46:28

0

你的数据应与键值对的对象为每个查询参数:不需要

data: { var1: 'theValue1', var2: 'theValue2' } 
1
url: "get_content.php?q="+str 

,true,部分。

此外,您需要一个变量名称为您的数据。顺便说一句,你可以通过使用相同的格式将q变量,没有它附加到URL

您可以使用短版本(它也将使用你的方法工作):

$.get("get_content.php", {q: str, txtHint: $('#txtHint').innerHTML()}, 
    function(data) { 
     alert('test'); 
    } 
);