2013-08-10 2 views
1

У меня есть форма, которую я бы хотел отправить без обновления страницы, я новичок в AJAX, и хотя мне удалось выполнить эту задачу, передав одно значение, я не уверен, как сделайте это с помощью массива.Передайте массив скрипту php с использованием AJAX

Форма ввода (отображается с помощью while петли)

<input type="hidden" name="user" value="<? echo $user_id; ?>" > 
<input type="text" name="reason[][<? echo $row['reasonID']; ?>]" 
        size="25" value="<? echo $row['reason_name']; ?>"/> 

<input type="submit" class="submit" value="Save"/> 

Сценарий

<script type="text/javascript" src="/js/jquery.js"></script> 
<script> 
    $(function() { 
    $(".submit").click(function() { 
    var dataString = '????'; 
    $.ajax({ 
    type: "POST", 
    url: "save_reasons.php", 
    data: dataString, 
    success: function(){ 
    alert('yay'); 
    } 
}); 

return false; 
}); 
}); 
</script> 

save_reasons.php

if(isset($_POST['save_reasons'])){ 
     $user_id = $_POST['user']; 
     foreach($_POST['reason'] as $item=>$value) 
    { 
    if(is_array($value)){ 
     foreach($value as $ID=>$reason) 
     { 
     $sql = "UPDATE gradeReason SET reason_name = '$reason' WHERE reasonID = $ID"; 
     $result = mysqli_query($mysqli,$sql) or die(mysqli_error($mysqli)); 
     } 
     } 
     else{ 
     if($value !=''){ 
       $sql = "INSERT INTO gradeReason (reason_userID, category, reason_name) VALUES ($user_id, 'positioning', '$value')"; 
       $result = mysqli_query($mysqli,$sql) or die(mysqli_error($mysqli)); 
      } 
     } 
     } 
    } 

После выполнения некоторых исследований я думаю, что с помощью datastring является путь вперед, но я не уверен, как использовать это с массивом (reason) и userID (user), а затем используйте его в сценарии PHP.

ответ

1

Use jQuery serialize function to pass your values.

$.ajax({ 
    type: "POST", 
    url: "save_reasons.php", 
    data: $('#myForm').serialize(), 
    success: function(){ 
    alert('yay'); 
    } 
    }); 
+0

спасибо, как бы я использовал его на php-странице? (Я очень новичок в AJAX) – tatty27

+0

все в порядке, судилось, подумал, что мне нужно каким-то образом неэриализовать данные, прежде чем я смогу их использовать, но немного исследований не показывают, спасибо за простое решение! – tatty27

+0

Без проблем :). Рад был помочь. – L105

1

Отправьте свои данные как json.

var myobj = { this: 'that' }; 
$.ajax({ 
    url: "my.php", 
    data: JSON.stringify(myobj), 
    processData: false, 
    dataType: "json", 
    success:function(a) { }, 
    error:function() {} 
}); 

На серверной стороне скрипт

<?php 
    $array = json_decode(file_get_contents("php://input"), true); 
?> 
+0

Передача верно в качестве второго аргумента json_decode делает это возвращает массив, поэтому его отливки в массив не требуется. – Musa

+0

спасибо, но что делает {это: 'that'}; имею в виду? – tatty27

+0

var myobj = {this: 'that'}; на самом деле является объектами json, где вы храните массивы javascript для обработки. В этом случае он будет интерпретироваться в php-подобном массиве ('this' => 'that'); –

Смежные вопросы