2016-05-14 16 views
0

Ich versuche, ein Formular ohne Aktualisierung der Seite zu senden, und ich möchte eine Warnmeldung angezeigt werden, wenn die Schaltfläche id = fav in geklickt. Das ist der Code, aber ich weiß nicht, was ich falsch gemacht habe. Sollte es auf Knopfdruck oder auf Formular senden?Formular ohne Aktualisierung (AJAX, PHP) senden

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




// AJAX Code To Submit Form. 
$.ajax({ 
type: "POST", 
url: "bookpage.php", 
data: {'fav':'fav'} , 
cache: false, 
success: function(response){ 
if(response.message){ 
alert(response.message); 
} 
} 
}); 
} 
return false; 
}); 
}); 
    </script> 
<form action="#read" method="post" id="f1"> 
    <div class="r1"> 
    <button class="down" name="download" title="Add to favorites">Download</button> 
    <li><a class="full" href="full.php?id=<?php echo $id; ?>">Full page</a> 
    </li> 

    <button class="d-later" name="dlater">Download later</button> 
    <button class="fav-button" type="submit" id="fav"></button> 

    </div> 
</form> 

PHP

if(isset($_POST['fav']) && $_POST['fav'] == 'fav' && fav_exists($u , $ii)== true){ 

     $query = "DELETE FROM favorites WHERE bid='$ii' AND email='$u'"; 
     $result = mysql_query($query); 
     if(! $result) { 

      die('Could not delete data: ' . mysql_error()); 

    } $response['message'] = 'My message'; 
echo json_encode($response); 

    }else if(isset($_POST['fav']) && $_POST['fav'] == 'fav' && fav_exists($u , $ii)== false){ 


      $query = "INSERT INTO favorites (email,book, bid) VALUES('$u','$bname','$ii')"; 
     $result = mysql_query($query); 
     if(! $result) { 

      die('Could not enter data: ' . mysql_error()); 
    } 
    $response['message'] = 'My message'; 
echo json_encode($response); 
} 

    function fav_exists($u , $ii){ 


    $query = "SELECT id FROM favorites WHERE email='$u' AND bid='$ii'"; 
    $result = mysql_query($query); 
    $count = mysql_num_rows($result); 


    if($count >= 1) { 
     return true; 
    } else { 
     return false; 
    } 

} 
+0

hinzufügen 'Taste type = 'submit'' – C2486

+0

Daten shoul d Daten sein: {'fav': fav}, – JYoThI

+0

Hat es funktioniert nicht. @ Rishi –

Antwort

0

Ich glaube, Sie leere Daten sind vorbei, siehe Beispiel unten, wie einige Daten zu übergeben; Wenn Sie Ajax ausführen möchten + php müssen Sie einige Daten zu übergeben

<?php if(isset($_POST['action'] && $_POST['action'] == 'my_action') { 
// do stuff; 
// to send json response use json_encode; 
$response['message'] = 'My message'; 
echo json_encode($response); 
} 


$.ajax({ 
url: "my_php.php", 
type: "POST", 
data: { 'action' : 'my_action' }, 
success: function(response){ 
if(response.message){ 
alert(response.message); 
} 
} 
}); 

Auch empfehle ich PHP PDO mit SQL-Abfragen zu machen - http://php.net/manual/en/book.pdo.php

upd:

$('#fav').click(function(){ 
    do_ajax_request('you can pass different type of acitons as param'); 
}); 
function do_ajax_request(action) { 
$.ajax({ 
url: "my_php.php", 
type: "POST", 
data: { 'action' : action }, 
success: function(response){ 
    if(response.message){ 
    alert(response.message); 
    } 
} 
}); 
} 

Und an Ihrem PHP-Datei können Sie switch oder if/else verschiedene Funktionen abhängig von Ihrem action;

<?php if(isset($_POST['action'])) { 
    $action = $_POST['action']; 
    switch($action) { 
    case 'favorites': 
    $msg = 'favorites action called'; 
    breake; 
    case 'not fav': 
    $msg = 'not fav called'; 
    breake; 
    default: 
    $msg = 'Nothing passed'; 
    breake; 
    } 
    $Response['msg'] = $msg; 
    echo json_encode($Response); 
} 
+0

In Ihrem Element Inspektor auf der Registerkarte 'Netzwerk 'sehen Sie, dass die Daten übergeben werden? Auch können Sie' print_r ($ POSTEDVALUE) 'in Ihrer PHP-Datei, um zu sehen, ob es übergeben wurde, über' Network' Registerkarte –

+0

Sie können versuchen, 'dataType: html' und nur einige Zeichenfolge auf der PHP-Seite Echo –

0

Dies ist, was ich für die gleiche Aufgabe verwenden.

HTML

<form action="" method="post"> 
name:<input type="text" name="user" /> <br/> 
<p><input type="submit" /></p> 
</form> 

JS

$(function() { 
    $('form').submit(function(e) { 
     e.preventDefault(); // Stop normal submission 
     data = $('form').serializeArray(); 
     alert(JSON.stringify(data)); 
     $.ajax({ 
      type: 'POST', 
      contentType: "application/json; charset=utf-8", 
      url: 'inc/update.php', 
      data: { 
       json: JSON.stringify(data) 
      }, 
      dataType: 'json' 
      } 
     }); 
    }); 
    return false; 
}); 

PHP

$str_json = file_get_contents('php://input'); 
$str_json = urldecode($str_json); 
$str_json = str_replace('json=[', '', $str_json); 
$str_json = str_replace(']', '', $str_json); 
$arr_json = json_decode($str_json, true); 
$name = $arr_json['name']; 

$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_password); 
$update = $pdo->prepare("UPDATE user SET name='".$name."' WHERE id='3';"); 
$update->execute(); 
Verwandte Themen