2016-04-14 24 views
0

üzerinden bir php işlevine göndermek için doğru yöntem Çoklu yükleme için bir oylama sistemi kodluyorum; yüklenen her resim, her birine ekli bir form içeren bir foreach ifadesinde, her biri mysql veritabanımdaki bir INT ile ilişkilendirilen, oylanacak, indirilecek veya yok olan üç düğmeyle.Bir html formundan bir değişkene ajax

Form verisini doğrudan 'UPDATE'in veritabanı' olan PHP işlevine göndererek çalıştım. Bir sayfanın yenilenmesini önlemek için ajax'ı ekliyorum. PHP fonksiyonu için gerekli olan iki değişkene doğru "image" satırını ve db'de INT'yi güncellemeye ajax aldım.

Soru: ajax işlevi çalışıyor, ancak PHP işlevi güncellenmiyor gibi görünüyor.

SÜSPANSLI SORUN: Eminim ki, ajax'daki değişkenleri tanımlamak istediğim yoldur, ele aldığım "görüntü" nin kimliğini yakalamaya çalışıyordum ama bilmiyorum UPDATE'nin doğru şekilde çalışması için bu verileri PHP fonksiyonuna nasıl çeviririz. sadece bütün form verilerini seri, İşte basit bir cevap

// IMAGE, and rest of foreach above this, and ending after form 
// This form only shows one button, there are three, each 
// I'll treat the same once I get one to work 
<form action="feed.php" method="post" id="vote_form_1"> 

// If js isn't turned on in broswer, I keep this 
// hidden input, to send unique ID 
<input type="hidden" name ="input_id" 
class="input_id" value="<?php echo $row['id']; ?>"/> 

<input type="submit" name="post_answer1" onclick="sayHi(event);" 
class="answer_L" id="<?php echo $row['id']; ?>" 
value="<?php echo $row['post_answerL']; ?>"/> 

</form> 
// end of foreach 

//AJAX 
<script type="text/javascript"> 
function sayHi(e) { 
var input_id = $(e.currentTarget).attr('id'); 
var post_answer1 = $("input[name='post_answer1']"); 
jQuery.ajax({ 
     type: 'POST', 
     url: 'feed.php', //name of this file 
     data:input_id,post_answer1, 
     cache: false, 
     success: function(result) 
       { 
       alert ('It worked congrats'); 
       } 
    }); 
e.preventDefault(); 
</script> 

// PHP VOTE UPDATE FUNCTION 
<?php> 
if(isset($_POST['post_answer1'],$_POST['input_id'])){ 
       $current_id = $_POST['input_id']; 
       $vote_1 = "UPDATE decision_post set " . 
        "post_answer1=post_answer1+1 WHERE id = '".$current_id."' "; 
       $run_vote1 = mysqli_query($conn2, $vote_1); 
       if($run_vote1){ echo 'Success'; } 
} 
?> 
+0

Ben, gelecekte böyle bir soru kod yaklaşık 10 satır aşağı kırılması durumunda, sorunuzu alakasız birçok aşağı kesilmiş fazla bilgi için http://sscce.org ettik. 100 satırlık javascript, php ve ajax kodunu yapıştırarak ve ThingB'den alıntı yapmak için nasıl bir şey alabileceğimi sormak, sizin için olumlu ve anında sonuçlar doğurabilir, ancak daha sonra tonlarca karmaşıklık içinde ilerlemek zorunda olan bu sayfaya gelecek ziyaretçiler için bir eser bırakmış olursunuz. ve% 99'unun bu soruyla hiçbir ilgisi olmadığı için bataklık ve hayal kırıklığına uğrayın. –

+0

Tamam teşekkürler! Gelecekte bir soru gönderirsem bunu aklımda tutacağım. –

cevap

0
var post_answer1 = $("input[name='post_answer1']").val(); 
+0

Bu çözülmüş görünüyor, teşekkür ederim, teşekkür ederim! –

0

:

İşte formu, javascript ve php var!

$('form').submit(function(){ 
    $.post('feed.php', $(this).serialize(), function(data){ 
     console.log(data); 
    }, 'json'); 

    return false; 
}); 
+0

Bunu deneyeceğim! user6196179 bir hata buldu, ancak bu genel olarak daha iyi bir yöntem gibi görünüyor. Teşekkür ederim! –

+0

5'den fazla girdiniz varsa, daha iyi kullanıcı için daha iyi bilgi için [Jquery Serialize] (https://api.jquery.com/serialize/) serileştirir! –