简体   繁体   中英

AJAX post variable to PHP not working

I am trying to get a jQuery variable to a PHP variable. I have looked it up but can't find a solution. I have the following jQuery:

$('.eventRow').click(function(){

    var eventID = $(this).attr('id');

    $.ajax(
        {
        url: "index.php",
        type: "POST",

        data: {'phpEventId': eventID },
        success: function (result) {
                console.log('success');
        }
    });

When I console.log te "eventID" it correctly displays the number.

My PHP code is in the index.php. This is also where the .eventRow class is.

<?php

  $phpEventId = $_POST['phpEventId'];
  echo "<script>console.log('Nummer: ".$phpEventId."')</script>";
  print $phpEventId;

?>

However nothing happens. The console.log just displays: "Number: " Is there something wrong with the code? Thanks for your help!

EDIT: Could it be the problem that the index.php is already loaded before I click on the button? Because this php code is in the index.php and thus the $phpEventId is not yet set.

In your Ajax, the type: "POST" is for jQuery prior to 1.9.0. If you're using the latest jQuery, then use method: "POST" .

If you're using the latest jQuery and you don't specify method: "POST" , then it defaults to method: "GET" and your PHP needs to capture it with $_GET['phpEventId']; .

After reading your update, let's try one thing. Change your PHP to return something meaningful to Ajax:

<?php
  $phpEventId = $_POST['phpEventId'];
  echo $phpEventId;
?>

Then try to capture the PHP response in your Ajax:

$.ajax({
    url: "index.php",
    method: "POST",
    data: {'phpEventId': eventID },
    success: function (result) {
        alert("result: " + result);
    }
});

This is just a part of your code, and the problem is somewhere else. In this context your code works just fine:

<div class="eventrow" id="1">This</div>
<div class="eventrow" id="2">That</div>
<script>
$('.eventRow').click(function(){

    var eventID = $(this).attr('id');

    $.ajax(
        {
        url: "index-1.php",
        type: "POST",

        data: {'phpEventId': eventID },
        success: function (result) {
                console.log('success: '+eventID);
        }
    });
});
</script>

With the matching index-1.php:

<?php

  $phpEventId = $_POST['phpEventId'];
  echo "<script>console.log('Nummer: ".$phpEventId."')</script>";
  print $phpEventId;

?>

Not sure though why do you print javascript code (console.log) into an ajax response here...

Error Is Visible Even Here

According to WebZed round statistic report, this error was visible over 84% of web-developers.

Failed to post data to PHP via JQuery while both frameworks and codes were updated.

Possible Solutions Available Today

  1. Try using other methods for posting because JQUERY and AJAX libraries are not as efficient as shown in the surveys.
  2. New frameworks are available which can do better with PHP.
  3. Alternative method is to create a post request via $_GET method.
  4. Regular HTML5 supports <form></form> try method="post" . For security reasons try using enctype="" command.

Try using React Native https://nativebase.io/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM