2016-05-14 4 views
0

Я пытаюсь отправить форму без обновления страницы, и я хочу, чтобы появилось предупреждающее сообщение, когда нажата кнопка id = fav. это код, но я не знаю, что я сделал неправильно. Должно ли это быть нажатием кнопки или на форме submit?Отправить форму без обновления (ajax, php)

<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

добавить 'кнопочного типа = 'submit'' – C2486

+0

Шоул данных d: данные: {'fav': fav}, – JYoThI

+0

Сделал это, не работает. @ Rishi –

ответ

0

Я думаю, что вы передаете пустые данные, смотрите пример ниже, как передать некоторые данные; Если вы хотите запустить Ajax + PHP необходимо передать некоторые данные

<?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); 
} 
} 
}); 

Также я настоятельно рекомендую использовать PHP PDO, чтобы сделать SQL запросы - 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); 
    } 
} 
}); 
} 

и в своем php файл вы можете switch или if/else различные функции в зависимости от вашего 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

В инспекторе «Элементы» на вкладке «Сеть» вы видите, что данные переданы? Также вы можете «print_r» ($ POSTEDVALUE) 'в вашем php-файле, чтобы узнать, прошел ли он через вкладку« Сеть » –

+0

. Вы можете попробовать' dataType: html' и просто эхо некоторой строки на стороне php –

0

Это то, что я использую для одной задачи.

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();