【发布时间】:2016-02-15 09:53:36
【问题描述】:
在使用 ajax 将 xmlhttp 请求发送到 php 文件并将其插入 mysql 数据库后,我无法从该请求中获取值。我从 yahoo Finance api 获得了您可以在 html sn-p 中看到的输出。之后这个 html 元素的值应该被发送到文件insertvolume.php。
成功发送后,我将数据保存到名为$jsonString 的变量中并对其进行解码。然后我尝试将数组中的特定值插入到我的 mysql 数据库中,但它不起作用。我认为问题在于该值在任何其他数组中,但我不知道如何编写。我只需要名为results 的数组有什么提示吗?
html:
<div id="output">{"query{"count":1,"created":"20160215T09:15:04Z","lang":"deDE","results":{"quote":{"symbol":"ZN","Ask":"2.05","LastTradeRealtimeWithTime":null,"ChangePercentRealime":null,"ChangeFromYearHigh":"-0.45","LastTradeWithTime":"4:00pm<b>1.81</b>",astTradePriceOnly":"1.81", "Volume":"500","HighLimit":null,"LowLimit":null,"DaysRange":"1.781"}}}}</div>
javascript:
var outputt = $('#output').text();
$.ajax({
type: "POST",
dataType: "json",
url: "insertvolume.php",
data: {myData: outputt},
success: function(data){
//alert('Items added');
}
});
一些来自 insertvolume php 的代码:
$jsonString = $_POST['mydata'];
$jsonArray = json_decode($jsonString, true);
$jsonArray1 = $jsonArray['query']['results']['quote'];
if ($stmt = $mysqli->prepare('INSERT INTO volume ( stocksymbol, volume, time) VALUES ( ?, ?, now())')) {
/* bind parameters for markers */
$stmt->bind_param($jsonArray1['symbol'], $jsonArray1['volume']);
/* execute query */
$stmt->execute();
/* close statement */
$stmt->close();
}
【问题讨论】:
-
我不知道该 JSON 是否无效,或者当您将其粘贴时它搞砸了。事实上,其中有换行符。
-
我做了这些换行符以便更好地阅读,但我可以删除它们。
-
你的html输出是这样的吗:
<div id="output">{"query{"count":1,"created":"20160215T09:15:04Z","lang":"deDE","results":{"quote":{"symbol":"ZN","Ask":"2.05","LastTradeRealtimeWithTime":null,"ChangePercentRealime":null,"ChangeFromYearHigh":"-0.45","LastTradeWithTime":"4:00pm<b>1.81</b>",astTradePriceOnly":"1.81","HighLimit":null,"LowLimit":null,"DaysRange":"1.781}}}}</div>
标签: javascript php mysql json