2017-01-30 9 views
-2

私は、各値に対して外部PHPページを呼び出す配列をループするJavaScript機能を呼び出す際に問題が発生しています。 Chromeのデベロッパーコンソールで次のエラーが表示されます。Javascript Uncaught SyntaxError:予期しないトークン

未知のSyntaxError:予期しないトークン。 CSV.php REG = 1:3

スクリプトすべてに渡す私の値を検査すると、それがあるべきようがあります:

<script type="text/javascript"> 
function.csvgen(){ 
var area = "["22","23","24"]"; 
var start =""2017-01-30"";  
var end = ""2017-02-06""; 
var len = area.length; 
for (i = 0; i < len; i++) { 
$.getScript("CSVGEN.php?area="+area[i]+"&start="+start+"&end="+end); 
} 
} 
</script> 

私は丁度良いプログラマではないんだと非常に少ないJavascriptを使用していました(この素晴らしいフォーラムの助けも必要でした...)。ここに私のページのコードです。コードのポイントは、ユーザーが自分の地域に加えて開始日と終了日に基づいていくつかの領域を選択させ、それぞれのMS SQLデータベースからCSVを生成することです。 CSVGEN.PHPファイル。 CSVGenファイルを手動で生成されたリンクでテストしたところ、静的リンクをforループの中に入れても機能しません。

<script type="text/javascript"> 
function.csvgen(){ 
    var area = "<?php echo json_encode(array_values($_POST['arealist'])); ?>"; 
    var start ="<?php echo json_encode($_POST['start']); ?>";  
    var end = "<?php echo json_encode($_POST['end']); ?>"; 
    var len = area.length; 
    for (i = 0; i < len; i++) { 
     $.getScript("CSVGEN.php?area="+area[i]+"&start="+start+"&end="+end); 
    } 
} 
</script> 

<?php 
$page_title="CSV Generator"; 
include("\Include\header.inc"); 
include("\Include\connect-db.php"); 
include("\Include\CSVGen.php"); 

$error=""; 

$start_date=date("Y-m-d"); 
$end_date=date("Y-m-d", strtotime("+7 days")); 


if(isset($_GET['reg'])) 
{ 
    $reg=$_GET['reg']; 
} 

else{ 
    $reg='1'; 
} 


if($start_date>$end_date){ 
    $error = 'ERROR: End Date cannot be before Start Date!'; 
} 

if ($error != '') 
{ 

    echo '<div class="container"> 
     <div class="row"> 
     <div class="alert alert-danger col-md-12">'.$error.' 
     </div> 
     </div> 
     </div>'; 

} 
$sqlareas="SELECT Area_Name, Region_ID, Area_ID FROM Listings_Areas WHERE region = '$reg'"; 
$arearesult= sqlsrv_query($conn, $sqlareas, array(), array("Scrollable"=>"buffered")); 
$areacount = sqlsrv_num_rows($arearesult); 


function renderForm($arearesult, $areacount, $start_date, $end_date){ 
?> 

<html> 

<head> 

</head> 

<body> 


<div class="container"> 

    <div class="row"> 
     <form id="CSV" name="form1" method="post"> 
      <div class="col-md-2 col-md-offset-1"> 

       <p><select name="arealist[]" size="<?php echo $areacount ;?>" multiple="multiple" tabindex="1"> 

       <?php 

       while($areas=sqlsrv_fetch_array($arearesult)){ 
        echo'<option value="' . $areas['Area_ID'] . '">' . $areas['Area_Name'] . '</option>'; 
       } 
       ?> 
       </select> 
      </div> 

      <div class="col-md-3"> 
       <strong>Start Date: </strong> <input type="date" name="start" value="<?php echo $start_date; ?>" /> 
      </div> 
      <div class="col-md-3"> 
       <strong> End Date: </strong> <input type="date" name="end" value="<?php echo $end_date; ?>" /> 
      </div> 
      <div class="col-md-2"> 
       <input type="submit" onclick="csvgen()" name="submit" value="Get CSVs"> 
      </div> 
     </form> 
    </div> 
</div> 

<?php 
} 
if($_SERVER['REQUEST_METHOD'] === 'POST'){ 
print_r(array_values($_POST['arealist'])); 
echo $_POST['start']; 
echo $_POST['end']; 
} 
else{  
renderForm($arearesult, $areacount, $start_date, $end_date); 
} 
?> 

は、私はすべてのタブ移動/間隔を取り除き、中に潜入している可能性のある潜在的な不正な文字をクリアしようとしましたが、それは私が唯一の私area.lengthのいずれかを参照している推測できる期間を、見せている限り、マニュアルからわかるように、私はそれを削除したり、$ .getsスクリプトを削除してもまだエラーが出ますが、他の場所で同様の機能を使用して問題がないので、なぜそれが間違っているのか分かりません。それを交換する方法。スペースで

<script type="text/javascript"> 
function csvgen(){ 
    //... 

代わり.functioncsvgen間:あるべき

<script type="text/javascript"> 
function.csvgen(){ 
    //... 

:あなたが持っているスクリプトの非常に初めで

+6

'function.csvgen()' 'function csvgen()' – Satpal

+0

'var start =" "2017-01-30" ";'? – RiggsFolly

+1

文字列の構文に問題があります。 'json_encode()'へのPHP呼び出しの前後に二重引用符は必要ありません。エンコーディングは必要なときに二重引用符を付けます。 – Pointy

答えて

0

注:このarea = "["22","23","24"]";も間違っています。 diferent引用符を使用する(のようなarea = '["22","23","24"]';)または内側の引用符をエスケープ(のようなarea = "[\"22\",\"23\",\"24\"]";

が良いのJavaScript チュートリアルを見つけて、JavaScriptで関数を宣言する方法についての詳細を学びます。

関連する問題