AJAX调用返回结果,但是在空白页面中

时间:2014-12-03 16:46:57

标签: javascript php jquery ajax

有几个问题与此类似,但我无法让他们的解决方案适合我。

基本上,我正在进行正常工作的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");
    } 
 });

感谢。

2 个答案:

答案 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()语句吗?