4

我有一个 js 脚本,它执行一个 ajax 请求并将数据发布到一个 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";
    }

所以基本上,我认为“成功:函数(响应)”方法中的响应将填充“它工作!!!” 或“未发布”,具体取决于 php.ini 中的 if 语句。现在一切似乎都正常了,因为 js 脚本设法进入了成功语句,但将其打印到控制台:

响应为空

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

任何想法我做错了什么?

4

7 回答 7

4

尝试:

if(isset($_POST["markets"]))
{
    $json = json_decode($_POST["markets"]);
    if(!empty($json))
    {
            echo "IT WORKED!!!!";
    }
        else
            echo "NOT POSTED";
}
于 2013-05-09T12:18:27.207 回答
1

在你的 php 文件中使用它

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

    }

代替

if(isset($_POST["json"]))
    {
.
.
.
.
}
于 2013-05-09T12:20:04.117 回答
0

显然,该if(isset($_POST["json"]))语句没有被调用,因此两个回声都没有被执行。.ajaxsuccess中指定的函数被调用,只是告诉你http连接url成功,并不代表数据处理成功。

于 2013-05-09T12:20:13.847 回答
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); 

});

于 2013-05-09T12:21:02.397 回答
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/

于 2013-05-09T12:24:07.320 回答
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);
?>
于 2013-05-09T13:56:53.817 回答
0

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

echo(json_encode($_POST));

这将告诉您的数据是否已发布以及 $_POST 中的数据结构。

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

$post_data = json_decode(json_encode($_POST), true); 
于 2014-12-12T15:49:48.597 回答