通过ajax发送特定的php变量

时间:2017-01-16 03:45:41

标签: jquery ajax

我有很多项目,我想在点击使用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; 
    });

1 个答案:

答案 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.
});