好了,伙计们,我都快疯了。。。
我希望将文章的内容和自定义字段附加到页面上的div中。内容和自定义字段的ID由用户选择的链接上的数据属性定义。
问题是没有填充ajax调用的函数的输出,而是复制了当前页面的整个html。
This is the html of the selectors and output div on the page...
<p><a class="funnel-direction" data-funnel-id="123" href="#">Option One</a> <a class="funnel-direction" data-funnel-id="456" href="#">Option Two</a></p>
<div id="result"></div> <!-- whole page gets duplicated in here - wtf? -->
This is enqueuing my script for the ajax call
add_action( \'wp_enqueue_scripts\', \'add_ajax_scripts\' );
function add_ajax_scripts() {
wp_enqueue_script( \'funnel-ajax\', DNA_FU . \'js/funnel-ajax.js\', array(), \'1.0.0\', true ); // working fine
wp_localize_script( \'funnel-ajax\', \'funnel_ajax\', array(
\'ajaxurl\' => admin_url( \'admin-ajax.php\' ),
\'ajaxnonce\' => wp_create_nonce( \'ajax_post_validation\' )
));
}
This is the function being called by ajax - it is this content I want to populate in <div id="result"></div>
.
add_action ( \'wp_ajax_nopriv_dna_add_funnel_part\', \'dna_add_funnel_part\' );
add_action ( \'wp_ajax_dna_add_funnel_part\', \'dna_add_funnel_part\' );
function dna_add_funnel_part() {
$id = $_POST[\'postid\'];
$meta = get_post_meta($id, \'dna_funnel_info\', true);
$content = apply_filters(\'the_content\', get_post_field(\'post_content\', $id));
$data = !empty($meta) ? \'<p>\' . $meta . \'</p>\' : \'\';
echo $content . $data;
wp_die();
}
finally, here is my ajax .js
jQuery(document).ready(function($) {
$(\'a.funnel-direction\').on( \'click\', function(e) {
e.preventDefault();
var postid = $(this).attr(\'data-funnel-id\');
console.log(postid); // working
$.ajax({
type: \'POST\',
url: funnel_ajax.ajax_url,
data: {
action: \'dna_add_funnel_part\',
postid: postid,
},
success: function(data) {
// console.log(data);
$(\'#result\').html(data); // This populates the entire html of the current
// page - it should only popualte the output of
// the dna_add_funnel_part() wordpress function
},
fail: {
// to do ...
}
});
return false;
});
});
已经看了一遍又一遍,这不能发现任何东西,希望你们都能发现!提前感谢