2013-04-28 59 views
0

我無法弄清楚這是否適合我的生活。如何從JQUERY向PHP傳遞數組,然後將數組發回PHP的JQUERY

我想通過一個單一的數組到一個PHP腳本processData.php,然後將使用該數據,以執行一個Perl腳本。

然後我想將perl腳本的結果返回給JQUERY進行顯示。

它看起來像當我嘗試顯示數據回來時,數據返回爲NULL值。

JQUERY PAGE: 
$('#numDevices').click(function(event) { 
     event.preventDefault(); 
     var test = []; 
     var $number = $('#element'); 
     var value = $number.val(); 
     var container = $('#main'); 
     $('.device').remove(); 
     $('#send').remove(); 
     for(var i=0; i<value; i++) { 
      container.append('<div class="device"><fieldset><legend>Device' + i + '</legend><textarea class="input" rows="10">Please enter a hostname, followed by the corresponding links.</textarea></fieldset></div>'); 

     } 
     container.append('<input type="submit" id="send" name="send" value="submit"/>'); 
     $('#send').click(function(event) { 
      event.preventDefault(); 

      var device = new Array(); 
      $('textarea').each(function(index, area) { 
       var $area = $(area).val(); 
       device.push($area); 
      }); 

      $.ajax({ 
       type: "GET", 
       url: "processData.php", 
       data: "input"+device, 
       cache: false, 

       success: function(data) { 
        alert(data); 
       }, 
       error: function() { 
        alert("FAILED"); 
       } 
      }); 
     }); 
    }); 

.....

PHP PAGE: 
<?php 
$data =$_GET['input']; 
echo json_encode($data); 
?> 

因此,大家可以看到,測試,我想傳遞一個數組到PHP,並將其傳遞迴JQUERY顯示。當我傳回時,我得到一個NULL值,所以我只能假設我正在發送一個NULL值。

如果需要更多信息,我會很樂意添加它。

UPDATE

1)我已經改變 data: "input"+device,data: {input: device},

現在我可以看到通過的var_dump(值$數據);

我現在遇到的問題是發送回JQUERY的數據是NULL。

第二更新

1)補充:dataType: "json" 2)更改GETPOST

新錯誤: 1)Parsererror 2)輸入 3意外結束)[對象] [對象]

+0

不要「假設」。有很多實用工具可以幫助您檢查實際發生的事情(如Fiddler或Chrome Developer Tools) – CodeZombie 2013-04-28 22:09:52

回答

0

好吧,我想通了,什麼是錯的.....

PHP 5.4版本沒有正確安裝

當我做了一個php -v,它會告訴我5.4.7,howe ver如果我做了一個rpm -qa | grep的PHP它會告訴我版本5.1.6。

我不得不刪除5.6.1的rpm,並安裝5.3的rpm,它工作。

謝謝大家幫助我解決這個問題!

2
var device = $.map($('textarea'), function(el, i) { return el.value; }); 

$.ajax({ 
    type: "GET", 
    url: "processData.php", 
    dataType: 'JSON', 
    data: {input : device.join('$$')}, 
    cache: false 
}).done(function(json) { 
    console.log(json); 
}); 

PHP

<?php 
    $data = $_GET['input']; 
    echo json_encode(explode('$$', $data)); 
?> 
+0

ahhh好吧我想我可能會越來越近。在做了一個var_dump後,我可以看到該值不再爲null,並且是數組(1){[0] => string(61)「正確的值」} – jmg0880 2013-04-28 22:14:53

+0

看來我現在的問題是我猜測這是不正確的? 'echo json_encode($ data);' – jmg0880 2013-04-28 22:15:56

+0

那麼警報是什麼意思? – adeneo 2013-04-28 22:20:22

0

測試這個

$('#numDevices').click(function(event) { 
     event.preventDefault(); 
     var test = []; 
     var $number = $('#element'); 
     var value = $number.val(); 
     var container = $('#main'); 
     $('.device').remove(); 
     $('#send').remove(); 
     for(var i=0; i<value; i++) { 
      container.append('<div class="device"><fieldset><legend>Device' + i + '</legend><textarea class="input" rows="10">Please enter a hostname, followed by the corresponding links.</textarea></fieldset></div>'); 

     } 
     container.append('<input type="submit" id="send" name="send" value="submit"/>'); 
     $('#send').click(function(event) { 
      event.preventDefault(); 

      var device = new Array(); 
      $('textarea').each(function(index, area) { 
       var $area = $(area).val(); 
       device.push($area); 
      }); 

      $.ajax({ 
       type: "POST", 
       url: "processData.php", 
       data: {input : device}, 
       cache: false, 
       dataType: 'json', 
       success: function(data) { 
        alert(data[0]); 
        alert(data[1]); 
       }, 
       error: function() { 
        alert("FAILED"); 
       } 
      }); 
     }); 
    }); 

在PHP

<?php 
$data =$_POST['input']; 
echo json_encode($data); 
?> 
+0

這將顯示[對象,對象],因爲警報無法顯示對象? – adeneo 2013-04-28 22:25:03

+0

當我使用'var results = JSON.parse(data);警告(結果)'它回來並說「意外的輸入結束」錯誤 – jmg0880 2013-04-28 22:27:23

+0

嘗試這個小可愛的功能,而不是警報,函數轉儲(obj){var 0。 for(var i in obj){ out + = i +「:」+ obj [i] +「\ n」; } alert(out); } – themis 2013-04-28 22:28:41