2011-08-05 12 views
0

PHPでテキストエリア配列($ taskLinks)をループし、データベースに対して各行のエントリをチェックして一致するものを探し、データベースから一致($ a) :ユーザーがテキストエリアに追加した後、上から任意の一致を返すときAJAXでそれを呼び出そうと完璧に動作しますが、イム上記Ajaxで呼び出されたときにForeachループが1回だけ実行される

$a = array(); 
    $array = split("\r\n", $taskLinks); 
    foreach($array as $url){ 
    $query = "SELECT url FROM links 
    WHERE `url` 
    LIKE '$url' 
    AND `projectId` = '$projectId'";  
    $result = mysql_query($query); 
    $row = mysql_fetch_object ($result); 
    $matchedLink = $row->url; 
    array_push ($a,$matchedLink); 
    } 
    foreach ($a as $row){ 
     echo "$row\r"; 
    } 

(linkchecker.phpと呼ばれる)PHPスクリプト。これを行うには、以下のようにして、textareaのonChange = "ajaxFunction()"と組み合わせてください。変数は、クエリ文字列でスクリプトに渡していると、PHPスクリプトはテキストエリアに一行だけのためではなく、作品 -

ajaxRequest.onreadystatechange = function(){ 
      if(ajaxRequest.readyState == 4){ 
       var ajaxDisplay = document.getElementById('ajaxDiv'); 
       ajaxDisplay.innerHTML = ajaxRequest.responseText; 
       document.myForm.time.value = ajaxRequest.responseText; 
      } 
     } 
     var taskLinks = document.getElementById('taskLinks').value; 
     <!-- 
     <?php 
     echo("var projectId = ('$projectId');"); 
     ?> 
     // --> 
     var queryString = "?taskLinks=" + taskLinks + "&projectId=" + projectId; 
     ajaxRequest.open("GET", "linkchecker.php" + queryString, true); 
     ajaxRequest.send(null); 
    } 

問題は、PHPスクリプトは一つだけの行がテキストエリアに追加されたときに動作しているようです - 通常と同じように、複数の行を処理する必要があります。

PHPスクリプトがテキストエリア内のすべてのエントリをチェックするようにAJAXに何をすることができますか?

+0


あなたもパラメータをエンコードする必要があります。
それは"\r\n"

EDITで/\r?\n/gの内部文字列の発生回数を置き換えますそのデータをPHPスクリプトに渡し、応答に基づいて目的の関数を実行します。 – RobB

答えて

0

textareaの値を使用しているときに\ rが失われているように見えるので、パターン"\r\n"は一致しません。
あなたは使用することができます:

$array = split("[\r\n]+", $taskLinks); 

...代わりに。

jQueryのserialize()(可能な場合)は、\ r

jQueryを使用できない場合は、jQueryの手法を使用してそのままにしておくこともできます。あなたはそれぞれの行をループ関数を作成することができます

var queryString = "?taskLinks=" + encodeURIComponent(taskLinks) + 
        "&projectId=" + encodeURIComponent(projectId); 
+0

あなたの答えをありがとう。残念ながら、PHPパターンを編集する運がありません。私は本当の問題はAJAXにあると思う、PHPは同じページで行われたときにうまく動作する。 – jimbo2087

+0

編集された記事を見る –

関連する問題