Alfie
Alfie

Reputation: 25

jQuery AJAX GET Request not calling properly

I'm calling a GET request from a jQuery AJAX function, but the GET request doesn't seem to be calling properly. After running the script, the address bar only shows "index.php?", instead of the expected "index.php?searchterm=searchterm".

index.php

$(function(){
$("form").submit(function(){
    var searchterm = document.getElementByID("searchterm").value;
    $.ajax({
            method: "GET",
            url: "search.php",
            data: searchterm
        })
    .done(function(res) {
        document.getElementById("item1").innerHTML = res;
    });
});
});

If it's any relevance, here is search.php

<?php
    if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    $searchterm= isset($_GET['searchterm']) ? $_GET["searchterm"] : '';
    exec("C:\Users\Callum\AppData\Local\Programs\Python\Python35-32\python.exe search.py $searchterm", $output, $result);
    echo $result[0];}
?>

Upvotes: 1

Views: 270

Answers (3)

Tal
Tal

Reputation: 700

the data property of the ajax function is an object so it should look like this:

data: { searchterm: searchterm }

Upvotes: 0

shivgre
shivgre

Reputation: 1173

You should open the firebug console and see if you ajax request is visible there. If it is visible you can click on it and you will see what data it is passing to the requested url search.php

Also You didn't pass the data correctly using ajax. And if you are using ajax then browser address bar will not be updated as the page is not getting reloaded.

$(function(){
$("form").submit(function(){
    var searchterm = document.getElementsByID("searchterm").value;
    $.ajax({
            method: "GET",
            url: "search.php",
            data: { searchterm : searchterm }//This is how to pass data correctly
        })
    .done(function(res) {
        document.getElementById("item1").innerHTML = res;
    });
});
});

Upvotes: 0

Kartikeya Khosla
Kartikeya Khosla

Reputation: 18873

Correct data in ajax call as :

.......
$.ajax({
     method: "GET",
     url: "search.php",
     data : { searchterm : searchterm } // Change here
})  
.......

According to docs ,data in ajax call is data to be sent to the server. It is converted to a query string, if not already a string. It's appended to the url for GET-requests. Object must be Key/Value pairs.

Reference

Upvotes: 2

Related Questions