我有以下代码..
if (config.sendResultsURL !== null)
{
console.log("Send Results");
var collate =[];
for (r=0;r<userAnswers.length;r++)
{
collate.push('{"questionNumber'+parseInt(r+1)+ '"' + ': [{"UserAnswer":"'+userAnswers[r]+'", "actualAnswer":"'+answers[r]+'"}]}');
}
$.ajax({
type: 'POST',
url: config.sendResultsURL,
data: '[' + collate.join(",") + ']',
complete: function()
{
console.log("Results sent");
}
});
}
使用Firebug我从控制台获取此信息。
[{"questionNumber1": [{"UserAnswer":"3", "actualAnswer":"2"}]},{"questionNumber2": [{"UserAnswer":"3", "actualAnswer":"2"}]},{"questionNumber3": [{"UserAnswer":"3", "actualAnswer":"2"}]},{"questionNumber4": [{"UserAnswer":"3", "actualAnswer":"1"}]},{"questionNumber5": [{"UserAnswer":"3", "actualAnswer":"1"}]}]
从这里脚本将数据发送到emailData.php,其中包含...
$json = json_decode($_POST, TRUE);
$body = "$json";
$to = "myemail@email.com";
$email = 'Diesel John';
$subject = 'Results';
$headers = "From: $email\r\n";
$headers .= "Content-type: text/html\r\n";
// Send the email:
$sendMail = mail($to, $subject, $body, $headers);
现在我收到了电子邮件,但它是空白的。
我的问题是如何将数据传递给emailData.php并从那里访问它?
答案 0 :(得分:2)
JSON.stringify()
为该对象创建JSON字符串。$_GET['name']
或$_POST['name']
。json_decode
以将JSON作为本机对象。在您的情况下,您只需传递userAnswers [r]并回答[r]。数组序列被保留。
for for loop use,
collate.push({"UserAnswer":userAnswers[r], "actualAnswer":answers[r]});
在ajax请求中使用,
data: {"data" : JSON.stringify(collate)}
在PHP端,
$json = json_decode($_POST['data'], TRUE); // the result will be an array.
答案 1 :(得分:0)
如果你解码你的json,你将有一个哈希而不是一个字符串。如果您希望邮寄的内容与您在控制台上打印的内容相同,只需执行以下操作:
$body = $_POST['data'];
另一种选择是将json解析为php哈希,将var_dump解析为:
$json = json_decode($_POST['data'], TRUE);
$body = var_export($json, TRUE);
答案 2 :(得分:0)
json_decode将字符串转换为对象。 只需执行以下代码并检查值。
print_r($json)
直接将json对象分配给字符串,这非常糟糕。
答案 3 :(得分:0)
使用以下JavaScript代码
var collate =[], key, value;
for (r=0;r<userAnswers.length;r++) {
key = questionNumber + parseInt(r+1);
value = { "UserAnswer": userAnswers[r], "actualAnswer": answers[r] };
collate.push({ key : value });
}
$.post( config.sendResultsURL, { data: collate }, function(data) {
console.log("Results sent");
});
在PHP中执行此操作
$data = json_decode( $_POST['data'], true );
您将拥有数组的所有数据。
答案 4 :(得分:0)
$jsonData = file_get_contents('php://input');
$json = json_decode($jsonData, 1);
mail('email', 'subject', print_r($json, 1));