2014-01-10 21 views
0

我試圖比較2 textareas的值,當你點擊比較按鈕輸出將顯示在3文本區域。所以我想要發生的是有兩個輸入按鈕時單擊PHP文件比較它們並將結果返回到第三個文本區域。我該如何做這項工作?這裏是我下面的代碼和這裏的的jsfiddle:http://jsfiddle.net/jVxhp/jquery調用PHP進程?

索引頁

<html> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 

     $('#Compare').click(function(e) { 
      e.preventDefault(); 
      $.ajax({ 
       type: 'POST', 
       url: 'Corrections.php', 
       data: {var1:address, var2:res}, 
       success: function(data) 
       { 
        $var1 = $_POST['var1']; 
        $var2 = $_POST['var2']; 
        document.getElementById('address').value; 
        document.getElementById('res').value; 
        document.getElementById('cor').value='Corrections.php'; 
       } 
      }); 
     }); 
    }); 
</script> 

<textarea type="text" id="address" 
      onfocus="if(this.value===this.defaultValue)this.value=''" onblur="if(this.value==='')this.value=this.defaultValue" 
      >Input1</textarea> 


<textarea type="text" id="res" onfocus="if(this.value===this.defaultValue)this.value=''" onblur="if(this.value==='')this.value=this.defaultValue" 
      >Input2</textarea> 

<textarea type="text" id="cor" style="color: silver" disabled> 
Output</textarea> 

<div id="btn1"><input type="button" value="Compare" onClick="valbtn()"></input></div> 

Corrections.php

<?php 
$str1 = address;//address is textarea1 that holds one of the values to be compared 
$str2 = res;//res is textarea2 were textarea1 will be compared 
$tempArr; 
$var2; 
$ctr=0; 

echo "Input:<br> $str1 <br><br>Output:<br> $str2"; 

$strarr = (explode(" ",$str1)); 
echo("<br>"); 

$strarr2 = (explode(" ",$str2)); 
echo("<br>"); 

if(sizeof($strarr) > sizeof($strarr2)){ 
    $result = array_diff($strarr,$strarr2); 
}else{ 
    $result = array_diff($strarr2,$strarr); 
} 

if (count($result) > 0){ 
    echo "Added:<br> | " ; 
    foreach ($result AS $result){ 
     echo $result." | "; 
    } 
} 

echo "<br>"; 

for($i=0;$i<count($strarr);$i++) { 
    if (strcasecmp($strarr[$i], $strarr2[$i]) != 0) 
    { 
     $var[$ctr] = strcasecmp($strarr[$i], $strarr2[$i]); 
     $var2[$ctr] = $i; 
     $ctr +=1; 
    }  
} 

$tempArr = preg_grep('/[0-9]/',$var); 

echo"<br>Changes: <br>"; 
for($i=0;$i<count($var);$i++) { 


     echo $strarr[$var2[$i]] . ' is changed to ' . $strarr2[$var2[$i]] . '<br>';  
} 
+0

JS小提琴不適用於PHP。 PHP代碼在Javascript中不起作用。看看使用'$ .load()'的jQuery Docs。這將用「Corrections.php」的輸出替換選定元素的內容。 – Scopey

+0

打開php錯誤報告。你會注意到一些錯誤。不要在foreach中使用相同的變量名稱。 – HarryFink

回答

1

您的AJAX呼叫不正確。

data參數是你的php文件打印的。你也不能在成功上寫$_POST,那是一個JS代碼,而不是PHP。

你的AJAX調用應該是這樣的:

$('#Compare').click(function(e) { 
     e.preventDefault(); 
     $.ajax({ 
      type: 'POST', 
      url: 'Corrections.php', 
      data: {var1:$('#address').val(), var2:$('#res').val()}, 
      success: function(data) 
      { 

       document.getElementById('cor').value=data; 
      } 
     }); 
    }); 

和PHP代碼應該是這樣的:

<?php 
$str1 = $_POST['var1'];//address is textarea1 that holds one of the values to be compared 
$str2 = $_POST['var2'];//res is textarea2 were textarea1 will be compared 

var1var2是你怎麼叫你對AJAX的參數調用

data: {var1:$('#address').val(), var2:$('#res').val()}, 

注意:我沒有檢查比較.php文件,因爲我認爲你的比較引擎是好的。

+0

@HarryFink當我發佈我的答案時,沒有答案,但現在我看到我們回答同樣的問題。 –

+0

在繼續我的工作之前,我決定學習更多關於Jquery和Ajax的基本語法,感謝您的意見和建議,謝謝 –

+0

祝您好運:) 您能否將我的答案標記爲您的問題的「答案」 ?只需點擊答案旁邊的「V」即可。 –

1

修改腳本:

$('#Compare').click(function(e) { 
     e.preventDefault(); 
     $.ajax({ 
      type: 'POST', 
      url: 'Corrections.php', 
      data: {var1: $('#address').val(), var2:$('#res').val()}, 
      success: function(data) 
      { 
       $('#cor').val(data); 
      } 
     }); 
    }); 

而且也修改你的PHP:

<?php 
$str1 = $_POST['var1'];//address is textarea1 that holds one of the values to be compared 
$str2 = $_POST['var2'];//res is textarea2 were textarea1 will be compared