我在提交我的"表格"时遇到问题与json。它不是传统的形式,我现在将发布一个代码:
$('#select').on('change', function() {
document.getElementById("info").setAttribute("data-info", this.value);
})
$('#info').on('click', function() {
var id = $(this).data('info');
add(info);
});
function add(info) {
$.ajax({
type: 'get',
cache: false,
contentType: content_type,
beforeSend: function(xhr) {xhr.overrideMimeType(content_type);},
data: {'action': 'info_add', 'info': info },
url: sitepath + 'info/all',
success: function() { update(); }
});
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<select id="select">
<option value="1">data1</option>
<option value="2">data2</option>
<option value="3">data3</option>
<option value="4">data4</option>
</select>
<div id="info">Button</div>
&#13;
如您所见,当select更改时,它会添加&#34; data-info&#34;属性为div。当按下div时,它会将数据信息发送到php脚本。问题是它总是发送相同的值。但刷新后,它只发送一次,然后再次发送与第一次相同的值。很难解释,但这里是例子:让我说我改变选择到&#34; data2&#34;按下div。它发送&#34; 2&#34;。但是当我将其更改为&#34; data3&#34;,然后按div时,它仍会发送&#34; 2&#34;,而不是&#34; 3&#34;。没有缓存集或其他东西。对不起英语不好,并提前感谢:)
答案 0 :(得分:0)
如果您还要使用jQuery
阅读它,请使用jQuery进行设置更改
document.getElementById("info").setAttribute("data-info", this.value);
到
$"#info").data("info", this.value);
当您不仅仅是按需阅读价值时,仍然想知道为什么要使用数据atrrbutes。
add($('#select').val());
答案 1 :(得分:0)
您正在使用令人困惑的代码,您可以使用以下方法实现相同的目标:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<select id="select">
<option value="1">data1</option>
<option value="2">data2</option>
<option value="3">data3</option>
<option value="4">data4</option>
</select>
<div id="info">Button</div>
<script>
$('.product__cart, .stock-product__cart').on('click', function() {
var info = $('#select').val();
$.ajax({
type: 'get',
cache: false,
data: {'action': 'info_add', 'info': info },
url: sitepath + 'info/all',
success: function() { update(); }
});
});
</script>