Javascript 回调从未对Jquery.post()调用过;
我在使用JQUERY Post函数时遇到一些问题 我有两个函数调用JQUERY Post函数。 这两个函数都工作正常,但从未调用回调函数(类似于handleLike) 当我手动调用handleLike时,它工作得非常完美。 (即使handleLike内部只有一个警报,也不会调用回调函数) 你能帮我做这件事吗Javascript 回调从未对Jquery.post()调用过;,javascript,jquery,jquery-callback,Javascript,Jquery,Jquery Callback,我在使用JQUERY Post函数时遇到一些问题 我有两个函数调用JQUERY Post函数。 这两个函数都工作正常,但从未调用回调函数(类似于handleLike) 当我手动调用handleLike时,它工作得非常完美。 (即使handleLike内部只有一个警报,也不会调用回调函数) 你能帮我做这件事吗 <script type="text/javascript"> $(document).ready(function() { function handle
<script type="text/javascript">
$(document).ready(function() {
function handleLike(v_cb){
alert("Call back chamou!");
$('#erro').html(v_cb.mensagem);
if (v_cb.class == 'map'){
var elemento = $('#maplike');
}else{
var elemento = $('#commentlike'+v_cb.id);
}
if (!(elemento.hasClass('disabled'))){
elemento.addClass("disabled");
var likes = elemento.find('font').text();
likes++;
elemento.find('font').html(likes);
}
}
$('#maplike').click(function() {
//var map_id = $('#like').find('font').attr('value');
var id = $(this).attr("name");
if (!($(this).hasClass('disabled'))){
var JSONObject= {
"mensagem":"Testando Json",
"id":86,
"class":"map"
};
handleLike(JSONObject);
alert("Teste");
$.post(
'/cmap/maps/like',
{ id: id },
handleLike,
'json'
);
}
});
$('[id*="commentlike"]').click(function() {
//var map_id = $('#like').find('font').attr('value');
var id = $(this).attr("name");
if (!($(this).hasClass('disabled'))){
$.post(
'/cmap/comments/like',
{ id: id },
handleLike,
'json'
);
}
});
});
</script>
$(文档).ready(函数(){
功能类似手(v_cb){
警惕(“打回查莫!”);
$('erro').html(v_cb.mensage);
如果(v_cb.class=='map'){
var elemento=$(“#maplike”);
}否则{
var elemento=$(“#commentlike”+v#u cb.id);
}
if(!(elemento.hasClass('disabled')){
elemento.addClass(“禁用”);
var likes=elemento.find('font').text();
喜欢++;
elemento.find('font').html(likes);
}
}
$('#maplike')。单击(函数(){
//var map_id=$('like').find('font').attr('value');
var id=$(this.attr(“name”);
if(!($(this).hasClass('disabled')){
var JSONObject={
“mensagem”:“Testando Json”,
“id”:86,
“类”:“映射”
};
手感(JSONObject);
警惕(“受试者”);
美元邮政(
“/cmap/maps/like”,
{id:id},
手感,
“json”
);
}
});
$('[id*=“commentlike”]')。单击(函数(){
//var map_id=$('like').find('font').attr('value');
var id=$(this.attr(“name”);
if(!($(this).hasClass('disabled')){
美元邮政(
“/cmap/comments/like”,
{id:id},
手感,
“json”
);
}
});
});
诊断,而不是解决方案
合理化并添加错误处理程序,您应该得到如下结果:
$(document).ready(function() {
function handleLike(v_cb){
alert("Call back chamou!");
$('#erro').html(v_cb.mensagem);
var elemento = (v_cb.class && v_cb.class == 'map') ? $('#maplike') : $('#commentlike'+v_cb.id);
if (!elemento.hasClass('disabled')){
var f = elemento.addClass("disabled").find('font');
f.html(++Number(f.text()));
}
}
function ajaxError(jqXHR, textStatus, errorThrown) {
alert('$.post error: ' + textStatus + ' : ' + errorThrown);
};
$('#maplike').on('click', function() {
var $this = $(this);
if (!$this.hasClass('disabled')) {
$.post('/cmap/maps/like', { id: $this.attr("name") }, handleLike, 'json').fail(ajaxError);
}
});
$('[id*="commentlike"]').on('click', function() {
var $this = $(this);
if (!$this.hasClass('disabled')) {
$.post('/cmap/comments/like', { id: $this.attr("name") }, handleLike, 'json').fail(ajaxError);
}
});
});
未经测试
除非出现错误,否则错误处理程序很有可能会通知您出了什么问题。我遵循Kevin B技巧并使用$ajax方法 这是一个错误。对不起
v_cb的返回不是json,而是html。我更正了我的报税表,一切正常。您的回拨电话在哪里?您调用回调函数的最可能原因是ajax请求发布成功了吗?它可能会失败,因此您的回调不会被触发。很可能您的服务器没有返回有效的json。如果使用这些请求的错误处理程序,您可能会得到
“parseerror”