Jquery ajax POST响应为null

时间:2013-05-09 12:14:39

标签: php javascript ajax jquery

我有一个执行ajax请求的js脚本并将数据发布到php脚本,这个脚本然后根据它是否有效回显一些东西。

这是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); 
    });

这是php:

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

所以基本上,我认为`success:function(response)'方法中的响应会填充“IT WORKED !!!”或“NOT POSTED”取决于php中的if语句。现在一切似乎都有效,因为js脚本设法进入成功语句,但将其打印到控制台:

  

响应为空

我需要能够从服务器获得返回以更新屏幕。

任何想法我做错了什么?

7 个答案:

答案 0 :(得分:4)

尝试:

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

答案 1 :(得分:1)

在你的php文件中使用它

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

    }

而不是

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

答案 2 :(得分:0)

有意识地没有调用if(isset($_POST["json"]))语句,因此两个回声都没有被执行。 调用.ajax成功中指定的函数的事实,只告诉您与url的http连接成功,它并不表示成功处理数据。

答案 3 :(得分:0)

看,你在market变量中发送的数据不在json中。请更改single.php代码。

$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";
}

更改你的ajax功能

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

});

答案 4 :(得分:0)

你正在使用“成功:”错误。

试试这个。

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

另请参阅jQuery文档。

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

答案 5 :(得分:0)

您必须使用

更改$ .ajax电话
   //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);
            },
        });

你的php文件将是

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

答案 6 :(得分:0)

在你的php文件中检查$ _POST:

echo(json_encode($_POST));

将告知您的数据是否已过帐以及$ _POST中的数据结构。

我使用以下代码将发布的数据转换为关联数组:

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