2014-09-25 114 views
0

我有一套使用ajax發送到php文件的變量。不是將它們全部作爲單個變量發送,有沒有辦法將它們作爲1個字符串發送,然後在php頁面中分解該字符串?使用ajax將多個變量保存爲字符串

主頁。

<script type="text/javascript"> 
     $(document).ready(function(argument) { 
      $('#save').click(function(){ 
       // Get edit field value 
       $edit1a = $('#edit1a').html(); 
       $edit2a = $('#edit2a').html(); 
       $edit3a = $('#edit3a').html(); 
       $edit4a = $('#edit4a').html(); 
       $edit5a = $('#edit5a').html(); 
       $edit6a = $('#edit6a').html(); 
       $edit7a = $('#edit7a').html(); 
       $edit8a = $('#edit8a').html(); 
       $edit9a = $('#edit9a').html(); 
       $edit10a = $('#edit10a').html(); 
       $edit11a = $('#edit11a').html(); 
       $.ajax({ 
        url: 'get.php', 
        type: 'post', 
        data: {edit1: $edit1a, edit2: $edit2a, edit3: $edit3a, edit4: $edit4a, edit5: $edit5a, edit6: $edit6a, edit7: $edit7a, edit8: $edit8a, edit9: $edit9a, edit10: $edit10a, edit11: $edit11a,}, 
        datatype: 'html', 
        success: function(rsp){ 
          alert(rsp); 
         } 
       }); 
      }); 
     }); 
    </script> 

php頁面。

$edit1 = @$_POST['edit1']; 
$edit2 = @$_POST['edit2']; 
$edit3 = @$_POST['edit3']; 
$edit4 = @$_POST['edit4']; 
$edit5 = @$_POST['edit5']; 
$edit6 = @$_POST['edit6']; 
$edit7 = @$_POST['edit7']; 
$edit8 = @$_POST['edit8']; 
$edit9 = @$_POST['edit9']; 
$edit10 = @$_POST['edit10']; 
$edit11 = @$_POST['edit11']; 



$insert =mysql_query('INSERT INTO pages (edit1, edit2, 
edit3, edit4, edit5, edit6, edit7,edit8, edit9, edit10, 
edit11) VALUES("'.$edit1.','.$edit2.','.$edit3.','.$edit4.','.$edit5.','.$edit6.', 
'.$edit7.','.$edit8.','.$ edit9.','.$edit10.','.$edit11.'")') 
or die ("could not insert new Data:" .mysql_error()); 
+0

也許'serialize()'? http://api.jquery.com/serialize/ – 2014-09-25 21:26:06

+0

可愛[sql注入攻擊](http://bobby-tables.com)漏洞。享受你的服務器pwn3d。 – 2014-09-25 21:26:14

+0

請[不要在新代碼中使用'mysql_ *'函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 *他們不再維護,並[已正式棄用](https://wiki.php.net/rfc/mysql_deprecation)*。看到[紅色框](http://uk.php.net/manual/en/function.mysql-connect.php)?學習[準備的語句](http://en.wikipedia.org/wiki/Prepared_statement),並使用[PDO](http://us1.php.net/pdo)或[MySQLi](http:// us1.php.net/mysqli)。 [這篇文章](http://php.net/manual/en/mysqlinfo.api.choosing.php)將幫助你決定哪些。 – 2014-09-25 21:26:55

回答

0

你可以做這樣的事情:

  $edit1a = $('#edit1a').html(); 
      $edit2a = $('#edit2a').html(); 
      var sepStr = '<SEPARATOR>'; //reserve whatever character or string you want 
      var combined1a2a = $edit1a + sepStr + $edit2a; 
      $.ajax({ 
       url: 'get.php', 
       type: 'post', 
       data: {combined: combined1a2a}, 
       datatype: 'html', 
       success: function(rsp){ 
         alert(rsp); 
        } 
      }); 

而在PHP:

$values = explode('<SEPARATOR>', POST['combined']); 
//access like $values[0], $values[1], etc. 

(我將停止在JavaScript變種名稱前使用$如果我是你,你。會開始越來越困惑什麼是JavaScript和PHP是這樣做的。)

+0

你不能使用一些jQuery選擇器來獲取所有#編輯*到數組中? – 2014-09-25 21:36:08

+0

@ Dagon,可能是,但要將它作爲一個字符串發送,你需要一個字符串,而不是一個數組。首先我不明白這一點,但這是可以完成的一種方式。 – developerwjk 2014-09-25 21:37:48

+0

我明白你在說什麼。這主要是爲了減少數據庫中的列,但我認爲我只是要走上我所擁有的路線。看起來好像浪費時間去做一些有效的事情 – amazingacademy 2014-09-25 21:40:59

相關問題