2017-02-23 6 views
0

私は、数値のリストを生成するPHP関数と、その配列を取得するためのajax呼び出しを持っています。私はリストを警告することができますが、それはうまくいきますが、HTMLテーブルに印刷しようとすると「Uncaught TypeError:インフィニティの 'length'を検索するために 'in'演算子を使用できません」というエラーが表示されます 助けてください。Ajaxデータをhtmlテーブルに出力するエラー

<!DOCTYPE html> 
<html> 
<head> 
<script  src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
</head> 
<body> 
<script> 
$.ajax({ 
type: "POST", 
url: "primeNumbers.php", 
datatype: 'JSON', 
success: function(data){ 
    var d = $.each(JSON.parse(data)); 
    var output; 
    $.each(d,function(i,e){ 
     output += '<tr><td>'+e.data+'</tr></td>'; 
     }); 

    $('#table').append(output); 

    alert(data); 
} 
}); 
</script> 
<h1>Heading</h1> 
<table id="table"> 
    <tr> 
    <td>Name</td> 
    </tr> 
</table> 

</body> 
</html> 

primeNumbers.php

<?php 
function prima($n){ 

    for($i=1;$i<=$n;$i++){ 

      $counter = 0; 
      for($j=1;$j<=$i;$j++){ 


       if($i % $j==0){ 

         $counter++; 
       } 
      } 


     if($counter==2){ 

       echo json_encode($i); 
     } 

    } 
} 
prima(100); 

?> 
+0

あなたのPHPスクリプトの出力を見ましたか?それはちょうど非常に大きな数字を出力します。素数をPHPスクリプトの配列に入れ、その配列のjson版を出力する必要があります。 – NineBerry

+0

Btw:これは素数を計算するのに非常に非効率な方法です – NineBerry

答えて

1

実際のエラーは、$ .eachはおそらく誤ったデータ型を取得していることを意味します。例えば。オブジェクトが渡されるべきときに文字列を繰り返し処理することができます。あなたのケースでは、javascriptとPHPコードの両方にエラーがあります。あなたのPHPコードはちょうど素数をエコーし​​ました。だから、あなたのajax関数は連結された数字の文字列を返します(Uncaught TypeErrorの理由)。数字を配列にプッシュし、それをjson文字列に変換してその結果を返さなければならないので、必要な場所にエコーすることができます。

あなたのajax関数のみについて。変数宣言に$ .each()を緩めます。 ので:UPDATEは、PHPを追加

var d = JSON.parse(data); 

ここ

は、固定/リファクタリングPHP関数です修正:

var d = $.each(JSON.parse(data)); 

になります。

function prima($n){ 

    $res = []; // Initiate result array 

    for($i=1;$i<=$n;$i++){ 

     $counter = 0; 
     for($j=1;$j<=$i;$j++){ 


      if($i % $j==0){ 

        $counter++; 
      } 
     } 


    if($counter==2){ 
     $res[] = $i; // store value to array 
    } 

    } 

    return json_encode($res); // return converted json object 

} 

header('Content-Type: application/json'); // tell browser what to expect 
echo prima(100); // echo the json string returned from function 
+0

ええ、私はそれを試してみました。私はちょうどエラーを避けることができません – user2168066

+0

@ user2168066あなたの固定機能を含める答えを更新 – Yolo

関連する問題