2016-04-30 57 views
3

我想发送数据到php使用jquery ajax。问题在于下面的代码。
(您可以忽略PHP)
HTML为每个数据jquery ajax

<ul class="blah"> 
<li>1</li> 
<li>2</li> 
<li>3</li> 
<li>4</li> 
</ul> 
<div class="result"></div> 

JQUERY

$(".blah li").each(function(){ 
    var each_li = $(this).text(); 
}); 

$.ajax({ 
    url: 'select-query.php', 
    method: 'POST', 
    data: {li_variable: each_li}, 
    success: function(response){ 
     $('.result').html(response); 
    } 
}); 

each_li回报AJAX功能只有一个值。我可以在每个函数中放入ajax,但是每个li元素都会执行ajax调用。我怎么能给所有李值ajax数据&只有一次调用阿贾克斯。

PHP(选择-query.php)

<? 
$query = "SELECT username FROM table WHERE id = '".$_POST['li_variable']."'"; 
$query_run = mysqli_query($connect,$query); 
while($query_array = mysqli_fetch_assoc($query_run)){ 
    echo $query_array['username']; 
} 
?> 
+0

你想要一个数据数组? –

+0

是的! –

+0

使用'each_li []'声明'each_li'为数组 – Thamilan

回答

3

你可以将数据推送到数组中,然后按照如下方式将它发送到jax请求中:

var each_li = []; 
$(".blah li").each(function(){ 
    each_li.push($(this).text()); //pushing the data in js array 
}); 

$.ajax({ 
    url: 'select-query.php', 
    method: 'POST', 
    data: {li_variable: each_li}, 
    success: function(response){ 
     $('.result').html(response); 
    } 
}); 
0

李创建值数组和AJAX发送阵列:

myArray = new Array(); 
cnt = 0; 
$(".blah li").each(function(){ 
     myArray[cnt] = $(this).text(); 
cnt++; 
}); 
var jsonString = JSON.stringify(myArray); 

$.ajax({ 
    url: 'select-query.php', 
    method: 'POST', 
    data: {li_variable: jsonString}, 
    success: function(response){ 
     $('.result').html(response); 
    } 
}); 

在PHP中:

$data = json_decode(stripslashes($_POST['li_variable'])); 

    foreach($data as $d){ 
    echo $d; 
    } 
2

您可以通过使用mapget收集所有元素的文本内容,

var each_li = $(".blah li").map(function(){ 
    return this.textContent; 
}).get(); 

不要以为它会做一个又一个迭代收集保存的值好怕的.get。它将简单地从Jquery对象中展开该值集合。引擎盖下不会发生迭代。

+1

好用和简短,这个简单性很强! – marvinhagemeister