admin管理员组

文章数量:1287163

I have a js script that does an ajax request and posts the data to a php script, this script with then echo something back depending if it works or not.

here is the JS

$(document).ready(function(){
        var post_data = [];
        $('.trade_window').load('signals.php?action=init'); 
        setInterval(function(){
            post_data = [   {market_number:1, name:$('.trade_window .market_name_1').text().trim()},
                    {market_number:2, name:$('.trade_window .market_name_2').text().trim()}];

            $.ajax({
                        url: 'signals.php',
                        type: 'POST',
                        contentType: 'application/json; charset=utf-8',
                        data:{markets:post_data},
                        dataType: "json",
                        success: function(response){
                            console.log("Response was "  + response);
                        },
                        failure: function(result){
                            console.log("FAILED");
                            console.log(result);
                        }
            });
        }, 6000); 
    });

here is the php:

if(isset($_POST["json"]))
    {
        $json = json_decode($_POST["json"]);
        if(!empty($json))
        {
                echo "IT WORKED!!!!";
        }
            else
                echo "NOT POSTED";
    }

So basically, i thought the response in the `success: function(response)' method would be populated with either "IT WORKED!!!" or "NOT POSTED" depending on the if statement in the php. Now everything seem to work because the js script manages to go into the success statement but prints this to the console:

Response was null

I need to be able to get the return from the server in order to update the screen.

Any ideas what I'm doing wrong?

I have a js script that does an ajax request and posts the data to a php script, this script with then echo something back depending if it works or not.

here is the JS

$(document).ready(function(){
        var post_data = [];
        $('.trade_window').load('signals.php?action=init'); 
        setInterval(function(){
            post_data = [   {market_number:1, name:$('.trade_window .market_name_1').text().trim()},
                    {market_number:2, name:$('.trade_window .market_name_2').text().trim()}];

            $.ajax({
                        url: 'signals.php',
                        type: 'POST',
                        contentType: 'application/json; charset=utf-8',
                        data:{markets:post_data},
                        dataType: "json",
                        success: function(response){
                            console.log("Response was "  + response);
                        },
                        failure: function(result){
                            console.log("FAILED");
                            console.log(result);
                        }
            });
        }, 6000); 
    });

here is the php:

if(isset($_POST["json"]))
    {
        $json = json_decode($_POST["json"]);
        if(!empty($json))
        {
                echo "IT WORKED!!!!";
        }
            else
                echo "NOT POSTED";
    }

So basically, i thought the response in the `success: function(response)' method would be populated with either "IT WORKED!!!" or "NOT POSTED" depending on the if statement in the php. Now everything seem to work because the js script manages to go into the success statement but prints this to the console:

Response was null

I need to be able to get the return from the server in order to update the screen.

Any ideas what I'm doing wrong?

Share Improve this question asked May 9, 2013 at 12:14 ragebunnyragebunny 1,76010 gold badges37 silver badges55 bronze badges 6
  • Can you paste your $_POST array result here? So that every body will find out what you're posting! – Smile Commented May 9, 2013 at 13:02
  • The problem is that i ouput the error sent to the php i get array() an empty array. – ragebunny Commented May 9, 2013 at 13:24
  • That's why your response from PHP file giving you null – Smile Commented May 9, 2013 at 13:26
  • Yeah but why is it not finding the array data? It's seeing a POST but it's not finding the data in the post. – ragebunny Commented May 9, 2013 at 13:30
  • I just managed to play with it and now my console out put is this: 'Response was Array ( [GBPUSD] => undefined [EURUSD] => undefined )' – ragebunny Commented May 9, 2013 at 13:30
 |  Show 1 more ment

7 Answers 7

Reset to default 4

Try:

if(isset($_POST["markets"]))
{
    $json = json_decode($_POST["markets"]);
    if(!empty($json))
    {
            echo "IT WORKED!!!!";
    }
        else
            echo "NOT POSTED";
}

use this in your php file

if(isset($_POST["markets"]))
    {

    }

instead of

if(isset($_POST["json"]))
    {
.
.
.
.
}

Obiously the if(isset($_POST["json"])) statement is not invoked, so neither of both echos is executed. The fact that the function specified in .ajax success is invoked, only tells you that the http connection to the url was successful, it does not indicate successful processing of the data.

You are using "success:" wrong.

Try this instead.

$.post("signals.php", { markets: post_data }).done(function(data) {
    /* This will return either "IT WORKED!!!!" or "NOT POSTED" */
    alert("The response is: " + data);
});

Also have a look at the jQuery documentation.

http://api.jquery./jQuery.post/

Look, You send data in market variable not in json. Please change on single.php code by this.

$json_data = array();
if(isset($_POST["markets"]))
{
 //  $json = json_decode($_POST["markets"]);
 $json = ($_POST["markets"]);
 if(!empty($json))
        echo "IT WORKED!!!!";
    else
        echo  "NOT POSTED";
}

And change on your ajax function

$(document).ready(function(){
var post_data = [];
$('.trade_window').load('signals.php?action=init'); 
setInterval(function(){
    post_data = [   {market_number:1, name:$('.trade_window .market_name_1').text().trim()},
            {market_number:2, name:$('.trade_window .market_name_2').text().trim()}];

    $.ajax({
                url: 'signals.php',
                type: 'post',
         //       contentType: 'application/json; charset=utf-8',
                data:{markets:post_data},
                dataType: "json",
                success: function(response){
                    console.log("Response was "  + response);
                },
                failure: function(result){
                    console.log("FAILED");
                    console.log(result);
                }
    });
},6000); 

});

You have to you change you $.ajax call with

   //below post_data array require quotes for keys like 'market_number' and update with your required data
   post_data = [   {'market_number':1, 'name':'name1'},
            {'market_number':2, 'name':'name2'}];
        //console.log(post_data);
        $.ajax({
            url: "yourfile.php",
            type:'post',
            async: true,
            data:{'markets':post_data},
            dataType:'json',
            success: function(data){
                console.log(data);
            },
        });

and you php file will be

<?php
if(isset($_POST['markets']))
{
    echo "It worked!!!";
}
else
{
    echo "It doesn't worked!!!";
}
//if you want to work with json then below will help you
//$data = json_encode($_POST['markets']);
//print_r($data);
?>

in your php file check the $_POST:

echo(json_encode($_POST));

which will tell if your data has been posted or not and the data structure in $_POST.

I have used the following code to covert the posted data to associative array:

$post_data = json_decode(json_encode($_POST), true); 

本文标签: phpJquery ajax POST response is nullStack Overflow