有几个问题与此类似,但我无法让他们的解决方案适合我。
基本上,我正在进行正常工作的AJAX调用 - 结果将重新开始。问题是,结果数组不是处理结果,而是打印回屏幕(并删除其他所有内容)。显然,它没有正确处理传入结果,但我不确定原因。
这是发送的表单:
<form class="removeAndApply" method="post" action="">
…hidden inputs...
<button type="submit">Use</button>
</form>
正在处理AJAX的PHP:
case "removeAndApply_PromoCode":
…Get data from $_POST….
…process stuff...
$response = …..;
$finalPrice = ….;
$dataArray = array('response'=>$response, 'finalPrice'=>$finalPrice);
header('Content-type: application/json');
echo json_encode( $dataArray );
exit();
break;
以下是失败时在屏幕上打印的示例结果文本:
{"response":{"Col1":"13","0":"13","Col2":"PC2","1":"PC2","Col3":"1","2":"1","Col4":"45.89","3":"45.89","col5":null,"4":null,"Col6":"1","5":"1"},"finalPrice":0}
这是应该处理它的javascript函数:
$('.removeAndApply').ajaxForm({url: this.href, type:'post',
data: this.serialize,
dataType: 'json',
success: function(response){
alert("asdf");
}
});
感谢。
答案 0 :(得分:1)
问题似乎出现在HTML按钮类型属性中。在<button type="submit">
中有<form>
并点击它时。表单提交,请求发送到服务器,浏览器在新文档中打开新响应。
如果你做了一些改变:
HTML:
<form class="removeAndApply" method="post" action="">
…hidden inputs...
<button type="button" id="submit-form">Use</button>
</form>
JS:
$('#submit-form').on('click', function() {
$.ajax({
type: 'post',
url: window.location.href,
data: $('.removeAndApply').serialize(),
dataType: 'json',
success: function(res) {...},
error: function(err) {...}
});
});
一切都应该没问题。
答案 1 :(得分:0)
这可能更适合评论,但我没有足够的代表,所以:
如果您不将ajax表单功能绑定到该表单,这就是您所看到的行为类型...按钮正常提交表单,您只看到来自服务器的普通json作为对(非ajax)帖子的回应。你确定正在执行ajaxForm()语句吗?