【发布时间】:2014-09-17 21:03:20
【问题描述】:
我的 script.php 文件将一些变量(从 HTML 表单中提取)发送到我的 email.php 文件。
这个文件然后将所有这些变量保存到一个 MYSQL 数据库中,作为回报还收集一个“订单 ID 号”(从 mysql_insert_id 收集),如下所示:
$order_id = mysql_insert_id();
然后将 $order_id 返回 传递给 script.php,后者将产品详细信息提交给 Paypal。目前,我希望 Paypal 的项目名称为“订单 ID:#$order_id”。
但是,我似乎无法将所有变量发送到 script.php,然后正确获取订单 ID。
我经常在 Google Chrome 控制台中收到“无法读取未定义的属性 'order_id'”错误,但是现在我从 JQuery 1.10.1 库中触发了这段代码(也在 Google Chrome 控制台中观察到)
// Uppercase the type
s.type = s.type.toUpperCase();
这会导致以下错误:未捕获类型错误:对象 1 没有方法“toUpperCase”。
这是我的代码。我了解 mysql 已贬值,但我想在进行任何升级之前实现它。 ;)
SCRIPT.PHP
$('#submit').click(function(){
// 执行检查以确保已选择所有下拉选项。
// 验证成功,现在填充贝宝表单的可变部分
$('#emailBuyer').val($('#email_paypal').val());
var host = $(location).attr('host');
var protocol = $(location).attr('protocol');
var pathname = $(location).attr('pathname');
var returnPath = pathname.replace("removed","removed");
var cancelReturnPath = pathname.replace("removed","removed");
var returnPathUrl = protocol + "//" + host + returnPath + $('#email_paypal').val();
var cancelReturnPathUrl = protocol + "//" + host + cancelReturnPath + $('#email_paypal').val();
$('#returnPath').val(returnPathUrl);
$('#cancelReturnPath').val(cancelReturnPathUrl);
// Send the email. It needs to have the async=false as the form is tried to redirect to paypal before the email is sent!
jQuery.ajaxSetup({async:false});
$.get( controllerDir + 'email.php', {
email: $('#email_paypal').val(),
type: 1,
question_one: $("#question_one option:selected").text(),
question_two: $("#question_two option:selected").text(),
question_three: $("#question_three option:selected").text(),
question_four: $("#question_four option:selected").text(),
question_five: $("#question_five option:selected").text(),
question_six: $("#question_six option:selected").text(),
question_seven: $("#question_seven option:selected").text(),
question_eight: $("#question_eight option:selected").text(),
question_nine: $("#question_nine option:selected").text(),
question_ten: $("#question_ten option:selected").text(),
amount: $('#amount').val(),
shipping: $('#shipping').val(),
total: $('#total').val(),
contentType: "application/json",
dataType: "json",
success: function (data) {
var myData = jQuery.parseJSON(data);
console.log(mydata['orderid']);
if (myData.orderid == '0') {
alert('FAILED');
$('#item_name').val( order_id + 'FAILED' + '');
} else {
var order_id = myData.orderid;
$('#item_name').val( order_id + 'SUCCESS' + '');
}
}
});
jQuery.ajaxSetup({async:true});
});
EMAIL.PHP
<?php
header('Content-Type: text/html');
//Define Variables
//User ID for remote email server
$user_id = "REMOVED"; // Reece
$question_one = $_GET['question_one'];
$q1 = ltrim($question_one, "0123456789., ");
$question_two = $_GET['question_two'];
$q2 = ltrim($question_two, "0123456789., ");
$question_three = $_GET['question_three'];
$q3 = ltrim($question_three, "0123456789., ");
$question_four = $_GET['question_four'];
$q4 = ltrim($question_four, "0123456789., ");
$question_five = $_GET['question_five'];
$q5 = ltrim($question_five, "0123456789., ");
$question_six = $_GET['question_six'];
$q6 = ltrim($question_six, "0123456789., ");
$question_seven = $_GET['question_seven'];
$q7 = ltrim($question_seven, "0123456789., ");
$question_eight = $_GET['question_eight'];
$q8 = ltrim($question_eight, "0123456789., ");
$question_nine = $_GET['question_nine'];
$q9 = ltrim($question_nine, "0123456789., ");
$question_ten = $_GET['question_ten'];
$q10 = ltrim($question_ten, "0123456789., ");
$amount = $_GET['amount'];
$shipping = $_GET['shipping'];
$total = $_GET['total'];
$type = $_GET['type'];
$order = $_GET['order'];
$date = date('m/d/Y');
$email_paypal = $_GET['email'];
// Upload to database first. All credentials are correct,
// as when the "success" part of the ajax call (script.php) is removed, everything is uploaded perfectly.
mysql_connect("CORRECT WEBHOST", "CORRECT USER", "CORRECT PASS") or die(mysql_error());
mysql_select_db("CORRECT DB") or die(mysql_error());
mysql_query("CORRECT QUERY");
$order_id = mysql_insert_id();
switch($type) {
case "1" :
$name = "Order $order_id Placed on $date";
$comments = "(UNPAID) $q1, $q2, $q3, $q4, $q5, $q6, $q7, $q8, $q9, $q10";
break;
case "2" :
$name = "Order Paid on $date";
$comments = "(PAID) $order";
break;
case "3" :
$name = "Order Cancelled on $date";
$comments = "(CANCELLED) $order";
break;
default :
$name = "$email_paypal $date";
$comments = "Form Error. Unable to process email.";
}
// Then send an email.
$payload = "user_id=$user_id&form_id=2&name=$name&email=$email_paypal&comments=$comments";
$curl_connection = curl_init("REMOVED");
curl_setopt($curl_connection, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_POST, true);
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $payload);
// NOTE: Error messages using an echo cannot be placed anywehere in this file. It distracts JSON and will make the Order ID variable unobtainable.
header('Content-Type: application/json');
echo json_encode(array("orderid" => "$order_id","email" => "$email_paypal"));
?>
【问题讨论】:
标签: javascript php ajax json paypal