【问题标题】:How do I update an html table after each XML call to the server without refreshing the page?如何在每次 XML 调用服务器后更新 html 表而不刷新页面?
【发布时间】:2011-04-12 16:40:42
【问题描述】:

我有一个加载了 50 行的 mySQL 表。每行都有处理信用卡所需的信息。当用户点击处理信用卡时,查询表格并使用 html 显示页面上的每一行。一旦数据显示在页面上,脚本将开始处理通过商家帐户的每一行,并将相应的行变为红色表示拒绝或绿色表示批准,而无需在每次交易后刷新页面。我认为我需要使用 AJAX 或 jQuery 来实现这一点,但我不确定我是否朝着正确的方向前进。这是处理交易的脚本:

<?php
$request = new GatewayRequest();
$response = new GatewayResponse();
$service = new GatewayService();


$request->Set(GatewayRequest::MERCHANT_ID(), "111111111111111");
$request->Set(GatewayRequest::MERCHANT_PASSWORD(), "xxxxxxxxxxxx");


$time = time();
$request->Set(GatewayRequest::MERCHANT_CUSTOMER_ID(), $time . '.PHPTest');
$request->Set(GatewayRequest::MERCHANT_INVOICE_ID(), $time . '.SaleTest');



$request->Set(GatewayRequest::AMOUNT(), "9.99");
$request->Set(GatewayRequest::CARDNO(), "4111111111111111");
$request->Set(GatewayRequest::EXPIRE_MONTH(), "02");
$request->Set(GatewayRequest::EXPIRE_YEAR(), "2010");
$request->Set(GatewayRequest::CVV2(), "999");


$request->Set(GatewayRequest::CUSTOMER_FIRSTNAME(), "Joe");
$request->Set(GatewayRequest::CUSTOMER_LASTNAME(), "PHPTester");
$request->Set(GatewayRequest::EMAIL(), "phptest@fakedomain.com");
$request->Set(GatewayRequest::IPADDRESS(), $_SERVER['REMOTE_ADDR']);


$request->Set(GatewayRequest::BILLING_ADDRESS(), "123 Main St");
$request->Set(GatewayRequest::BILLING_CITY(), "Las Vegas");
$request->Set(GatewayRequest::BILLING_STATE(), "NV");
$request->Set(GatewayRequest::BILLING_ZIPCODE(), "89141");
$request->Set(GatewayRequest::BILLING_COUNTRY(), "US");




$request->Set(GatewayRequest::SCRUB(), "IGNORE");
$request->Set(GatewayRequest::CVV2_CHECK(), "IGNORE");
$request->Set(GatewayRequest::AVS_CHECK(), "IGNORE");

$service->SetTestMode(TRUE);

if ($service->PerformPurchase($request, $response)) {
  print "Purchase succeeded\n";
  print "Response Code: " .
    $response->Get(GatewayResponse::RESPONSE_CODE()) . "\n";
  print "Reasone Code: " .
    $response->Get(GatewayResponse::REASON_CODE()) . "\n";
  print "Auth No: " . $response->Get(GatewayResponse::AUTH_NO()) . "\n";
  print "AVS: " . $response->Get(GatewayResponse::AVS_RESPONSE()) . "\n";
  print "CVV2: " . $response->Get(GatewayResponse::CVV2_CODE()) . "\n";
  print "GUID: " . $response->Get(GatewayResponse::TRANSACT_ID()) . "\n";
  print "Account: " .
    $response->Get(GatewayResponse::MERCHANT_ACCOUNT()) . "\n";
  print "Scrub: " .
    $response->Get(GatewayResponse::SCRUB_RESULTS()) . "\n";
} else {
  print "Purchase failed\n";
  print "GUID: " . $response->Get(GatewayResponse::TRANSACT_ID()) . "\n";
  print "Response Code: " .
    $response->Get(GatewayResponse::RESPONSE_CODE()) . "\n";
  print "Reasone Code: " .
    $response->Get(GatewayResponse::REASON_CODE()) . "\n";
  print "Exception: " .
    $response->Get(GatewayResponse::EXCEPTION()) . "\n";
  print "Scrub: " .
    $response->Get(GatewayResponse::SCRUB_RESULTS()) . "\n";
}

?>

这种类型的代码是否可以在不重写的情况下与 AJAX 或 jQuery 一起使用?任何帮助将不胜感激。

【问题讨论】:

    标签: php html xml


    【解决方案1】:

    任何东西都可以在不被重写的情况下工作,但是你已经为自己设置了很多麻烦。通过将所有这些打印语句格式化为一个数组并对其进行 JSON 编码,您可能会获得更好的运气(并节省大量时间)。显然 javascript 喜欢 JSON。

    【讨论】:

    • 如何在使用 Javascript 的 AJAX 中格式化这段代码?除了如何使用 httpObject.open 在 Javascript 函数中使用上述代码之外,我拥有所有必要的部分?
    • 这里有一个非常棒的关于使用 httpObject.open 的教程:link。如果您对响应进行 JSON 编码,则 httpObject.responseText 将是一个 javascript 对象。那时最简单的事情可能就是使用点符号访问对象的属性。 (即 httpObject.responseText.[你的参数])
    猜你喜欢
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多