我有一个执行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脚本设法进入成功语句,但将其打印到控制台:
响应为空
我需要能够从服务器获得返回以更新屏幕。
任何想法我做错了什么?
答案 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文档。
答案 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)
echo(json_encode($_POST));
将告知您的数据是否已过帐以及$ _POST中的数据结构。
我使用以下代码将发布的数据转换为关联数组:
$post_data = json_decode(json_encode($_POST), true);