我有很多项目,我想在点击使用ajax后发布特定的项目信息。通常我按属性data-name,data-date等存储它的信息。我使用jquery通过.attr()
来获取它。如果文本太长或者每个项目都有一个文本数组{"Text1", "Text2","Text3"...."Text20"}
,我不知道该怎么做。我无法将其存储为属性。我无法弄清楚把它放在哪里或怎么样?如何通过jQuery获取?
我的项目看起来很简单
<div class="item">
<a data-name="item1" data-available="1" data-color="blue">Item1</a>
</div>
<div class="item">
<a data-name="item2" data-available="1" data-color="pink">Item2</a>
</div>
这是我的jquery
jQuery(".item a").on('click', function () {
var url = "/test.php";
var item_name = jQuery(this).attr("data-name");
jQuery("#display").html("<img id='loading_gif' src='/loading.gif'>");
jQuery("#display").load(url,{item_name:item_name});
return false;
});
答案 0 :(得分:2)
您可以使用ajax,
将json数据发送到您的php文件jQuery(".item a").on('click', function () {
var available = $(this).attr("data-available"),
color = $(this).attr("data-color");
$.ajax({
url: 'url_to_your_phpfile.php',
type: 'post',
data: {
avail: available,
color: color
},
success: function (data){
console.log(data); // do something
}
});
}
在PHP文件中,只需使用$_POST['avail']
和$_POST['color']
修改强>
由于您想要从php访问您的数据到javascript,您可以将其存储到javascript变量中,例如
<?php
$products = array(
array("id" => 1, "name" => "Item 1", "color" => "red", "desc" => "some large text..."),
array("id" => 2, "name" => "Item 2", "color" => "blue", "desc" => "some large text...")
);
echo '<script>var products = '.json_encode($products).'</script>';
// and then display
foreach($products as $product):
echo '<div class="item"><a data-id="'.$product->id.'" data-color="'.$product->color.'">'.$product->name.'</a></div>';
endforeach;
我认为您的javascript文件将始终位于页面的页脚区域,因此,您始终可以在javascript代码上调用products
变量。
在您的JS中,您始终可以添加自定义功能,以通过其ID
function findProduct(id){
var product = products.filter(function (product){
if(product.id == id){
return product;
}
});
return products.length > 0 ? products[0] : product;
}
$('.item a').on('click', function () {
// get the id
var id = $(this).attr("data-id");
// now, make a function that finds other data for that product with that ID
var product = findProduct(id); // finds a product from variable products
// product variable will now contain id, name, color, desc and
// can be accessed directly with product.id, product.desc, etc.
});