2014-12-03 153 views
0

有几个问题与此有些类似,但我一直无法让他们的解决方案为我工作。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"); 
    } 
}); 

谢谢。

+0

在你的成功函数中执行** console.log(data); **并查看控制台。什么是返回? – alda1234 2014-12-03 16:48:21

+0

没有 - 我怀疑它在进入成功函数 – 2014-12-03 16:50:12

+0

之前失败,所以你的编码数组的方式可能是错误的。如果你删除exit(),会发生什么? – alda1234 2014-12-03 16:51:49

回答

0

这可能是更适合评论,但我没有足够的代表为,所以:

这是你会看到,如果你不绑定Ajax表单功能行为的类型以这种形式...按钮提交表单正常,你只是看到普通的json来自服务器作为对(非Ajax)职位的回应。你确定ajaxForm()语句正在执行吗?

0

该问题似乎是HTML按钮类型属性。当您在<form>中有<button type="submit">并且您点击它时。表单提交,请求被发送到服务器,浏览器在新文档中打开新的响应。

如果你做一些修改:

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) {...} 
    }); 
}); 

一切都应该罚款。