$.ajax({
type: "GET",
url: "my url" + x,
datatype: "html",
success: function(data){
//alert(x);
//var Content = data;
var sendId ;
var data = $.parseJSON(data);
var jsonArray = data.result;
// var data2 = $.parseJSON(jsonArray);
var jsonArray3 = jsonArray.oilFilter;
$.each(jsonArray3,function(i1,js2){
var proname = js2.productName;
var mrp = js2.mrp;
var deliveryStatus = js2.deliveryStatus;
var oilid = js2.productId;
$(".oilid").val(oilid);
$(".deliveryStatusOil").html(deliveryStatus);
$(".mrpoil").html(mrp);
$(".oilprodetail").html(proname);
});
<label id="oilprodetail" class="oilprodetail"></label><br/>
<label id="mrpoil" class="mrpoil"></label><br/>
<a onClick="ajax_cross(this);" id="oilid" class="oilid" >View</a>
如果你查看代码,我正在为id oilprodetail和mrpoil分配标签标签的值,我也对油脂做同样的事情, 我的要求是将oilid值发送到标签并保留其中的视图, 请帮忙?我是ajax的新手..
在上面的图片中,我需要做的视图中的右侧部分, 但是当我发送数据时,它会更改为图片的左侧部分,就像它从视图更改为发送的值
答案 0 :(得分:0)
您可以使用data属性来保持“a”标记的innerHTML。喜欢:
$(".oilid").attr('data-oilid',oilid);
答案 1 :(得分:0)
您的代码存在以下问题:
datatype
,应该是dataType
; dataType
属性(这是你的情况),jQuery会猜测数据类型,并可能猜测它是JSON。在这种情况下,$.parseJSON
将失败,因为jQuery已经解码了JSON字符串并将结果显示为data
参数; .html(...)
方法将某些元素的内容设置为某些文本。 html()
只应在内容确实是HTML时使用,否则(我认为是您的情况),您应该.text(...)
; a
元素没有value
属性,因此在其上调用.val()
没有达到预期效果; oilid
值传递给ajax_cross
函数,但提供this
,这是一个HTML元素(a
),而不是值。 要解决所有这些问题,您可以从这段代码中获得灵感:
$.ajax({
type: "GET",
url: "my url" + x,
dataType: "json", // corrected spelling and type
success: function(data){
// Don't parse as JSON string any more, data alread is object;
// Don't name your variable jsonArray, it is neither of those
var result = data.result;
var jsonArray3 = result.oilFilter;
$.each(jsonArray3, function (i1, js2) {
var proname = js2.productName;
var mrp = js2.mrp;
var deliveryStatus = js2.deliveryStatus;
var oilid = js2.productId;
// bind onclick handler with oilid argument bound to it:
// use `get()` to select the next element of the same class:
$(".oilid").get(i1).off('click').on('click', ajax_cross.bind(null, oilid));
// use text(), not html()
$(".deliveryStatusOil").get(i1).text(deliveryStatus);
$(".mrpoil").get(i1).text(mrp);
$(".oilprodetail").get(i1).text(proname);
});
}
});
<label id="oilprodetail" class="oilprodetail"></label><br/>
<label id="mrpoil" class="mrpoil"></label><br/>
<!-- remove onclick attribute, we bind the handler dynamically -->
<a id="oilid" class="oilid" >View</a>
<hr><!-- repeat elements for second row -->
<label id="oilprodetail" class="oilprodetail"></label><br/>
<label id="mrpoil" class="mrpoil"></label><br/>
<!-- remove onclick attribute, we bind the handler dynamically -->
<a id="oilid" class="oilid" >View</a>
<hr><!-- repeat elements for third row -->
<label id="oilprodetail" class="oilprodetail"></label><br/>
<label id="mrpoil" class="mrpoil"></label><br/>
<!-- remove onclick attribute, we bind the handler dynamically -->
<a id="oilid" class="oilid" >View</a>
上面的内容仍然不理想,因为您可以在迭代Ajax结果时更好地动态创建元素,因此您可以拥有所需数量的元素。