我有一个使用AJAX与基于PHP的API通信的脚本。 第一部分加载交易历史:
$(document).ready(function () {
var orders = $('#History ul');
var user = "<?php echo $user; ?>";
$.ajax({
type: "GET",
url: "api.php",
data: {
user: user
},
success: function (response) {
console.log(response);
var res = JSON.parse(response);
$.each(res, function (index, value) {
console.log(value);
if(value['PL']>=0){
orders.append("<li style=\"color:green;\">" + value['User'] + "</li>");
}else{orders.append("<li style=\"color:red;\">" + value['User'] + "</li>");}
});
}
});
第二部分向数据库发布交易:
$("#submit").click(function(){
//event.preventDefault();
var oPrice = newOrder.elements["oPrice"].value;
var cPrice = newOrder.elements["cPrice"].value;
var oType = newOrder.elements["oType"].value;;
var oSymbol = newOrder.elements["oSymbol"].value;
var oAmount = newOrder.elements["oAmount"].value;
var json ={
'user': user,
'oPrice': oPrice,
'cPrice': cPrice,
'oType': oType,
'oSymbol': oSymbol,
'oAmount': oAmount};
alert(JSON.stringify(json)); //---check zda je naplněný
$.ajax({
type: "POST",
url: "api.php",
data: json,
success: function (response) {
alert(response);
}
});
});
问题是,当我按下按钮并发送json时,它缺少'用户'数据,看起来像这样:
TraderBook.php?oPrice=1&cPrice=1&oType=LONG&oSymbol=1&oAmount=1
我不知道为什么ajax会排除它。 json变量填写了
答案 0 :(得分:1)
我认为您的问题可能就在这里
$(document).ready(function () {
var user = "<?php echo $user; ?>";
var
是JS范围界定声明。因此,您将user
值限制为仅由页面DOM加载完成触发的匿名函数。你应该做的是尝试在函数之外确定范围
var user; //global scope
$(document).ready(function () {
user = "<?php echo $user; ?>";
这样,当您的$("#submit").click(function()
触发时,就会有一个值输入您的脚本。
答案 1 :(得分:0)
我错误地检查了json中表单的错误数据。问题出在API内 - &gt; SQL命令中有一个制表符..
感谢大家的建议。