Ajax成功回调从未执行,parsererror

Ajax成功回调从未执行,parsererror

问题描述:

我正在对服务器端PHP脚本进行简单的AJAX调用,但成功回调从未执行。相反,在错误回调下,我得到错误'parsererror'。我搜索了*,并尝试了一切,但没有任何工作。Ajax成功回调从未执行,parsererror

如果我尝试将URL加载到带有相关字段的PHP脚本(在本例中为http://....../matching.php?cmd=generate&N=2&M=3),我将以返回的JSON格式获取适当的数据。对于例如

{"N":"2","M":"3","E":[[1,1,39],[0,3,100],[2,1,50]]} 

AJAX调用

$('form').on('submit', function(event) { 
     event.preventDefault(); 
     $.ajax({ 
      url: 'matching.php', 
      dataType: 'json', 
      contentType: 'json', 
      type: 'GET', 
      data: { 
       cmd: "generate", 
       N: $('#n1').val(), 
       M: $('#n2').val() 
      }, 
      success: function(data) { 
       alert(data); 
       leftCount = data.N; 
       rightCount = data.M; 
       returnedArray = data.E; 
       generateFirstPage(); 
      }, 
      error: function(request,error) { 
       alert(request.responseText); 
       alert(error); 
      } 
     }); 

    }) 

PHP

<?php 

if (isset($_GET['cmd'])) { 
    $n = $_GET["N"]; 
    $m = $_GET["M"]; 
    echo json_encode(generateEdges($n, $m)); 
    exit; 
} 

function generateEdges($n, $m) { 
    $edgeNumber = rand($n,$n*2); 
    $e = array(); 
    for($i=0; $i<$edgeNumber; $i++) { 
     array_push($e, array(rand(0,$n), rand(0,$m), rand(1,100))); 
    } 
    return $finalArray = array('N' => $n, 'M' => $m, 'E' => $e); 
} 

?> 

做一个console.log(request.reponseText)会给

{"N":"2","M":"3","E":[[1,0,42],[1,3,48],[0,3,44],[0,0,8]]} 
+0

echo json_encode(generateEdges($ n,$ m));出口; –

+0

@NabinKunwar我仍然得到一个parsererror。 – CHEWWWWWWWWWW

+0

后台console.log(数据)? –

我相信错误是您的AJAX调用并未实际触及您的matching.php文件。我将自己的代码复制到了我自己的2个文件中,其中1个包含HTML和JavaScript(虽然我的确将javascript包装为$(document).ready(function() { ... }),但这似乎不是您的问题)。

当我点击提交时,调用我自己的“matching.php”,但将该文件留空,我得到了与你提到的相同的parsererror。如果我然后有匹配。PHP执行您提供的代码,它击中成功条件,一切都很好。我不认为这个问题是PHP甚至是你的JavaScript,一定是它在寻找matching.php的地方。

使用Firebug或Chrome的开发人员JavaScript控制台查看ajax网络调用,以查看它是否实际上击中它。这可能只是一个不同问题的症状,但值得双重检查,imo。