Ajax search without "submit" button - php

I have a search form:
<form action="search.php" method="post" name="form" id="form" onsubmit="return false;">
<input name="search" type="text" id="search">
<input name="name" type="text" id="name">
<select name="car" id="car">
<option value="audi">AUDI</option>
<option value=bmw">BMW</option>
<option value="mini">MINI</option>
</select>
<select name="year" id="year">
<option value="2000">2000</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
</select>
</form>
And search.php
<?php
$search = $_POST['search'];
$search = addslashes($search);
$search = htmlspecialchars($search);
$search = stripslashes($search);
$year = $_POST['option'];
$year = addslashes($year);
$year = htmlspecialchars($year);
$year = stripslashes($year);
if($search == '')
exit("Enter name");
elseif(!preg_match("/^[a-zа-я0-9]+$/ui", $search))
exit("Incorrectly");
include 'dbsetting.php';
$mysqli->set_charset("utf8");
$query = "SELECT * FROM cars WHERE (type LIKE '%".$search."%' OR name LIKE '%".$search."%' OR class LIKE '%".$search."%') AND year = '".$year."'";
Live search works. Using AJAX code:
$(function() {
$("#search").keyup(function(){
var search = $("#search").val();
$.ajax({
type: "POST",
url: "search.php",
data: {"search": search},
cache: false,
success: function(response){
$("#res").html(response);
}
});
return false;
});
});
input name="search" working correctly, but I can not add to search another select and more inputs. How to add to ajax code some inputs and select and how to save and add to search results in search.php?
I'm sorry for my English.

you can post your fields either name value pair format like:-
var search = $("#search").val();
var name = $("#name").val();
var car = $("#car").val();
var year = $("#year").val();
And user that query string while sending ajax request as data field.
data: {"search": search, "name":name, "car": car, "year":year},
Or you can use $( "form" ).serialize(); to convert all forms field automatically into name value pair like.
var my_data = $( "form" ).serialize();
// user that variable in your ajax call.
data: my_data,

Try this , use jquery bind
$('#search, #car, #year').bind( "keyup change", function() {
//put your ajax here
});

$(function() {
$("#search").keyup(function(){
var search = $("#search").val();
var name = $("#name").val();
var car = $("#car").val();
var year = $("#year").val();
$.ajax({
type: "POST",
url: "search.php",
data: {"search": search, "name":name, "car": car, "year":year},
cache: false,
success: function(response){
$("#res").html(response);
}
});
return false;
});
});

Try jquery .on() function
$(function() {
$("#search").on('keyup',function(){
var search = $("#search").val();
$.ajax({
type: "POST",
url: "search.php",
data: {"search": search},
cache: false,
success: function(response){
$("#res").html(response);
}
});
return false;
});
});

Related

How to create dynamic select option chantiers ouvrages in laravel?

I have two selects, the 1st filled by ouvrages and other by chantiers there is between them belongsTo relation, I want when I choose chantier in 1st select the 2nd filled by ouvrages corresponds, but in my case it gives me empty data.
mois.blade.php
//select chantiers
<select class="form-control" id="chantier_id">
<option selected disabled>Select Location</option>
#foreach($chantiers as $chantier)
<option value="{{ $chantier->id }}">{{ $chantier->chantier}}</option>
#endforeach
</select>
//select ouvrages
<select class="form-control" id="ouvrage_id">
<option value="0" selected disabled>- Select -</option>
</select>
jQuery
<script type="text/javascript">
$(document).ready(function() {
$('#example').DataTable();
});
$(document).ready(function(){
$("#chantier_id").change(function(){
var chantier = $(this).val();
$.ajax({
url: "{{ route('salarie.select') }}",
type: 'post',
data: {
chantier:chantier,
"_token": "{{ csrf_token() }}"
},
dataType: 'json',
success:function(response){
console.log(response);
var len = response.length;
$("#ouvrage_id").empty();
for( var i = 0; i<len; i++){
var id = response[i]['id'];
var ouvrage = response[i]['ouvrage'];
$("#ouvrage_id").append("<option value='"+id+"'>"+ouvrage+"</option>");
}
}
});
});
});
</script>
SalarieController.php
public function select(request $request){
$ouvrages = Ouvrage::where('chantier_id',$request->chantier_id);
return response()->json(['options'=>$ouvrages]);
}
web.php
Route::post('/select','SalarieController#select')->name('salarie.select');
Route::get('/mois','SalarieController#mois');
You need jQuery.parse(response) to parse json
and change loop to $.each to make it easy and less complex.
<script type="text/javascript">
$(document).ready(function() {
$('#example').DataTable();
$("#chantier_id").change(function(){
var chantier = $(this).val();
$.ajax({
url: "{{ route('salarie.select') }}",
type: 'post',
data: {
chantier:chantier,
"_token": "{{ csrf_token() }}"
},
dataType: 'json',
success:function(response){
console.log(jQuery.parse(response));
$("#ouvrage_id").empty();
$.each( jQuery.parse(response), function( key, value ) {
$("#ouvrage_id").append("<option value='"+key+"'>"+value+"</option>");
});
}
});
});
});
</script>

Reset ajax data when button clcik using jquery

I have scenario form like this
if option selected it will come out a new field i named "hah" i call it using ajax script like this
$('#bahan').change(function() {
var id = $('#bahan').val()
var datana = 'id=' + id
var urlna = "<?=base_url()?>controller/food/getdetailstok";
$.ajax({
type: 'POST',
url: urlna,
data: datana,
success: function(data) {
$('#hah').html(data);
}
})
return false;
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group">
<select class="form-control select2" name="bahan" id="bahan">
<option value="">-- Choose One --</option>
<option value="1"> 1 </option>
<option value="2"> 2 </option>
</select>
</div>
<div id="hah"></div>
How to reset "hah" if i click button save. hah in reset because the value field options again become null
$('#hah').empty() will do the trick.
.empty() will remove every element from the DOM. In your case every element in your #hah div.
$('#bahan').change(function() {
$('#hah').html("");
var id = $('#bahan').val()
var datana = 'id=' + id
var urlna = "<?=base_url()?>controller/food/getdetailstok";
$.ajax({
type: 'POST',
url: urlna,
data: datana,
success: function(data) {
$('#hah').html(data);
}
})
return false;
})

Ajax not posting when value based on selectbox

What I have here is ajax that's post information into textbox from database. This ajax work's in input field, but when I tried to use select box it doesn't working. Why is that?
not working
<select id="tag"><option value="">none</option><option value="crs">crs</option></select>
working
<input name="tag" id="tag" type="text" value="" />
Index.php
<select id="tag"><option value="">none</option><option value="crs">crs</option></select>
<input name="output" id="output" type="text" value="" />
<script type="text/javascript">
$(document).ready(function()
{
$('input[id="tag"]').change(function()
{
var prjt_code = $("#tag").val();
$.ajax({
type: "POST",
url: "autocomplete-ajax.php",
data :"prjt_code="+prjt_code,
dataType:'html',
type:'POST',
success:function(data){
//alert(data);
$('#output').val(data);
}
});
return false;
});
});
</script>
autocomplete-ajax.php
<?php
if(isset($_POST['prjt_code'])) {
$prjt_code = $_POST['prjt_code'];
$sql = $mysqli1->query("SELECT * FROM project WHERE project='$prjt_code'");
while($row1 = $sql->fetch_assoc())
{
$code = $row1['project_code'];
}
echo $code;
}
?>
You are targeting input[id="tag"] when you want select[id="tag"]
http://jsfiddle.net/releaf/U28jb/
$(document).ready(function() {
$('select[id="tag"]').on('change', function() {
var prjt_code = $("#tag").val();
alert(prjt_code);
$.ajax({
type: "POST",
url: "autocomplete-ajax.php",
data :"prjt_code="+prjt_code,
dataType:'html',
type:'POST',
success:function(data){
//alert(data);
$('#output').val(data);
}
});
return false;
});
});

AJAX Function jQuery to PHP Access Response Variables

I am trying to send an AJAX function from jQuery to PHP. I can get it to the right page fine, but when I get there, how do I access the data from the AJAX call? It's probably something silly I'm missing.
jQuery:
$(document).ready(function() {
$("#assessform_page").on("submit", "#assessform", function(e) {
e.preventDefault();
var assessrows = {};
var url = $(this).attr("action");
$("div[data-test-num]").attr("data-test-num", function(index, value) {
assessrows[value] = {};
$(this).children("input[data-tab-row], select[data-tab-row]").attr("data-tab-row", function(i, v) {
assessrows[value][v] = $(this).val();
});
$(this).children("label[data-tab-row]").attr("data-tab-row", function(i, v) {
assessrows[value][v] = $(this).text();
});
});
$.ajax({
url: url,
data: assessrows,
type: "POST",
success: function() {
window.location.href = url;
},
});
});
});
HTML:
<form id="assessform" action="assessment.php" method="post" enctype="application/x-www-form-urlencoded" name="assessform">
<div data-test-num="1">
<label data-tab-row="objname">First Value: </label>
<select autofocus="autofocus" data-tab-row="status">
<option value="not_started">Not started</option>
<option value="in progress">In Progress</option>
<option value="obstacles">Obstacles</option>
<option value="excluded">Excluded</option>
<option value="done">Done</option>
</select>
<input type="text" data-tab-row="numer" value="" />
<input type="text" data-tab-row="denom" value="" />
<br />
<br />
</div>
<button type="submit" name="submit-button" id="submit-button">Submit</button><br />
<button type="button">Save</button><br />
</form>
PHP:
<?php ?> (I can't really do anything until I get this variable.)
What variable do I call to get the data from the AJAX, and what function, if any, do I need to call before I can do that?
EDIT:
If your assessment.php make a response as follows:
<?php
echo 'successfully_completed';
?>
The response data from PHP will be passed as follows:
$.ajax({
url: url, // assessment.php
data: assessrows,
type: "POST",
success: function(data) {
alert("The response is [" + data + "]");
// "The response is [successfully_completed]"
// If you want to pass this data to the next page
window.location.href = "/foo/success.php?data="+data;
}
});
$.ajax({
url: "url",
data: assessrows,
type: "POST",
success: function(data) {
console.log(data); //do something with data
window.location.href = url;
},
});

AJAX/JS/PHP: Submitting value of a select box without page refresh or button click

I am currently using Ajax to submit an input field without a page refresh or button click. The function works well with a text input field But it doesnt work with posting the value of a select box and then php echoing the result. I check with the firebug tool and nothing is being posted by Ajax/js function.
How can I submit the value of a select box so I can then echo with the php? EXAMPLE
JS
<script>
$(document).ready(function() {
var timer = null;
var dataString;
function submitForm(){
$.ajax({ type: "POST",
url: "index.php",
data: dataString,
success: function(result){
$('#item_input').text( $('#resultval', result).html());
}
});
return false;
}
$('#item_name').on('keyup', function() {
clearTimeout(timer);
timer = setTimeout(submitForm, 050);
var name = $("#item_name").val();
dataString = 'name='+ name;
});
});
</script>
PHP
<?php
if ($_POST)
{
$item_name = $_POST['name'];
echo ('<div id="item_input"><span id="resultval">'.$item_name.'</span></div>');
}
?>
HTML
<html>
<form method="post" id="form" name="form">
<select name="item_name" value="<? $item_name ?>" size="4" id="item_name">
<option value="">Item1</option>
<option value="">Item2</option>
<option value="">Item3</option>
<option value="">Item4</option>
</select>
</form>
<div id="item_input"></div>
</html>
select tags does not trigger keyup event , you should use change instead, try the following:
$('#item_name').on('change', function() {
clearTimeout(timer);
var name = $(this).val();
dataString = 'name='+ name;
timer = setTimeout(submitForm, 050);
});
$('#item_input').html(result);
Trigger submitForm() with an onchange event so that every time the value of <select> changes, it submits.
KeyUp is for input boxes and others that use the keyboard. Select boxes you can either use onClick or onChange, preferrably onChange:
$('#item_name').change(function() {
clearTimeout(timer);
timer = setTimeout(submitForm, 050);
var name = $("#item_name").val();
dataString = 'name='+ name;
}
This will work for you.
Good Luck!
It seems that your js is right problem is in your html part. you not provided the select list values. pls provide values to select list options.
$(document).ready(function() {
var timer = null;
var dataString;
function submitForm(){
$.ajax({ type: "POST",
url: "index.php",
data: dataString,
success: function(result){
//$('#item_input').html( $('#resultval', result).html());
//$('#special').text(result);
//$('#item_input').html( $('#resultval').html() + '<p>' + result + '</p>');
$('#item_input').html(result);
}
});
return false;
}
$('#item_name').on('change', function() {
clearTimeout(timer);
var name = $(this).val();
dataString = 'name='+ name;
timer = setTimeout(submitForm, 050);
});
});
it should be like this or whatever values you want to post
<select name="item_name" value="" size="4" id="item_name">
<option value="item1">Item1</option>
<option value="item2">Item2</option>
<option value="item3">Item3</option>
<option value="item4">Item4</option>
</select>

Categories