在我的wordpress网站中,我正在插入输入字段并使用Ajax获取数据。
这是Jquery:
<script>
$(function() {
$('body').on('click', '.post-link', function() {
$('#post-cont').fadeIn();
var post_names = '';
var ajax = {};
ajax.id = $(this).attr('rel');
var ajaxurl = '<?php echo site_url() ?>/wp-admin/admin-ajax.php';
jQuery.post(ajaxurl, {
'action': 'get_img_post_and_title',
'data': ajax
}, function(response) {
if (response.success) {
if (post_names === '') {
post_names = 'aa';
} else if (post_names === 'aa') {
post_names = 'ab';
} else if (post_names === 'ab') {
post_names = 'ac';
} else {
post_names = 'ad';
}
if ($('#post-cont input').length <= 4) {
$('#post-cont').append('<div class="rows"><input name="' + post_names + '" value="' + response.data.post_id + '"> ' + response.data.post_title + ' <img src="' + response.data.post_thumb + '"/></input></div>');
}
}
});
});
});
</script>
.PHP:
add_action("wp_ajax_get_img_post_and_title", "get_img_post_and_title");
add_action("wp_ajax_nopriv_get_img_post_and_title", "get_img_post_and_title");
function get_img_post_and_title(){
$return = array(
'post_id' => $_POST['data']['id'],
'post_title' => get_the_title($_POST['data']['id']),
'post_thumb' => wp_get_attachment_image_url(get_post_thumbnail_id($_POST['data']['id'])),
);
wp_send_json_success($return);
}
使用此脚本,我正在尝试控制max number of input field to 4
并从aa, ab, ac, ad
分配自定义名称。
这个脚本成功地添加了最多 4 个,但只为所有错误分配aa
名称。
如何为所有插入的字段分配 4 个不同的名称?
请尝试以下代码快照:
<script>
var custom_input_names = ['aa', 'ab', 'ac', 'ad'];
$(function() {
$('body').on('click', '.post-link', function() {
$('#post-cont').fadeIn();
var post_names = '';
var ajax = {};
ajax.id = $(this).attr('rel');
var ajaxurl = '<?php echo site_url() ?>/wp-admin/admin-ajax.php';
jQuery.post(ajaxurl, {
'action': 'get_img_post_and_title',
'data': ajax
}, function(response) {
if (response.success) {
for (var i=0; i<custom_input_names.length; i++) {
if ($('#post-cont').find('input[name=' + custom_input_names[i] + ']').length < 1) {
$('#post-cont').append('<div class="rows"><input name="' + custom_input_names[i] + '" value="' + response.data.post_id + '"> ' + response.data.post_title + ' <img src="' + response.data.post_thumb + '"/></input></div>');
break;
}
}
}
});
});
});
</script>
如果您希望限制超过 4,则可以向custom_input_names
添加更多元素。例如,如果您想要最多 7 个,则可以更改custom_input_names
如下所示:
var custom_input_names = ['aa', 'ab', 'ac', 'ad', 'ae', 'af', 'ag'];
代码中存在拼写错误,阻止post_names
状态更新到上次使用的输入字段名称。删除1
,它应该可以工作!(您的变量在一行代码中称为post_names1
!;-)
if (post_names === '') {
post_names = 'aa';
} else if (post_names**l** === 'aa'){
post_names = 'ab';
} else if (post_names === 'ab'){
post_names = 'ac';
} else {
post_names = 'ad';
}
已修复(还更改了将其设置为ad
一点的最后一个,只是为了确保(:
if (post_names === '') {
post_names = 'aa';
} else if (post_names === 'aa'){
post_names = 'ab';
} else if (post_names === 'ab'){
post_names = 'ac';
} else if (post_names === 'ac'){
post_names = 'ad';
}
除此之外,每次运行此函数时,您都会重置post_names
的状态。您应该将post_names = ''
移出函数。
var post_names = '';
if (response.success) {
if (post_names === '') {
post_names = 'aa';
} else if (post_names === 'aa') {
post_names = 'ab';
} else if (post_names === 'ab') {
post_names = 'ac';
} else {
post_names = 'ad';
}
if ($('#post-cont input').length <= 4) {
$('#post-cont').append('<div class="rows"><input name="' + post_names + '" value="' + response.data.post_id + '"> ' + response.data.post_title + ' <img src="' + response.data.post_thumb + '"/></input></div>');
}
}
什么会很好...
- 将输入类型分配给
<input>
- 对每行使用一个表单,而不是一个
- 将 ID 放在名为 id 的隐藏字段中
- 不要将图像放置在输入内(更好的:示例小提琴(
漫长的答案... ;)
if (response.success) {
$form = '<div class="rows">' +
'<form method="POST" action="data.php">' +
' <input type="hidden" name="id" value="' + response.data.post_id + '">' +
' <div class="input_container">' +
' <input type="submit" class="myinput" value="' + response.data.post_title + '">' +
' <img src="' + response.data.post_thumb + '" id="input_img">' +
' </div>' +
'</form>' +
'</div>';
$('#post-cont').append($form);
}
CSS部分:
.input_container {
position:relative;
padding:0;
margin:0;
}
.myinput {
height:20px;
margin:0;
padding-left: 30px;
}
.input_container img {
position:absolute;
bottom:8px;
left:10px;
width:10px;
height:10px;
}
在数据中.php
$ID = $_POST['id'];
echo get_post_meta( $ID, 'brand', true );