获取没有$ _POST或$ _GET方法的表单值

时间:2017-01-19 19:45:34

标签: javascript php jquery wordpress

我正在编写一个使用javascript,jQuery和PHP的wordpress页面。它会将传递的值中的QR码生成到页面中。生成之后,我提取一个QRcode的src,它是data:image / png; base64格式。问题是将此字符串传递给PHP而不使用任何方法。我需要它来形成HTML格式的电子邮件,这是在加载页面时发送的。我不熟悉AJAX,但我知道有一个URL()方法,可以将值传递给PHP函数吗?

这是我写的代码(是的,它是多余的,不整洁的......): 请务必将其保存到您的设备上并在到达时显示它!

<div id="qrcode"></div>
<form method="post">
<input type="text" name="image" id="image"></input>
<input type="submit" value="Send to e-mail"></input>
</form>
[gravityform id="3" title="false" description="false"] //Hidden form with values for QRcode
<script type="text/javascript" src="http://yourjavascript.com/10124121272/qrcode.js"></script>
<script>
var email = document.getElementById("input_3_1").value;
var date = document.getElementById("input_3_2").value;
var type = document.getElementById("input_3_3").value;
var id = document.getElementById("input_3_4").value;
var qrcode = new QRCode("qrcode", {
    text: "Email of buyer: "+email+"; Type of an offer: "+type+"; Date of purchase: "+date+"; ID: "+id,
    width: 256,
    height: 256,
    colorDark : "#000000",
    colorLight : "#ffffff",
    correctLevel : QRCode.CorrectLevel.H
});
jQuery(document).ready(function( $ ) {
var image = jQuery('img[alt="Scan me!"]').attr('src');
jQuery('#image').val(image);
});
</script>

[insert_php]
add_filter( 'wp_mail_content_type', 'wpdocs_set_html_mail_content_type' );
$to = $_GET[email];
$image = Some magical approach to get base64 image from form name="image"
$subject = 'Subject of an email';
$message = '<html><head><body>
<h1>Hello! Here is your QRcode!</h1>
<img src=$image />
</body></head><html>'
wp_mail( $to, $subject, $message );
remove_filter( 'wp_mail_content_type', 'wpdocs_set_html_mail_content_type' );
function wpdocs_set_html_mail_content_type() {
    return 'text/html';
}
[/insert_php]  

1 个答案:

答案 0 :(得分:2)

  

问题在于将此字符串传递给PHP而不使用任何方法。

方法/动词是HTTP请求的关键部分,如果要将数据发送到PHP脚本,则需要该请求。您必须发出某种HTTP请求。

您可以轻松使用AJAX将数据传输到脚本中。

$.post(
  '/yourScript.php'
  qrCodeStringData
  'text/plain'
).then(function () {
  // Do something if successful
}).catch(function () {
  // Do something if failure
});

此外,我得到的印象是您在该QR码中发明了自己的数据格式。我建议使用JSON,因此您不必担心构建数据。 (如果有人在你的数据中加了分号怎么办?突然你的格式无法使用。使用像JSON这样的众所周知的格式意味着你不必处理它。)