Ajax返回错误500,无论给出url的文件是什么

时间:2015-10-14 13:27:56

标签: php jquery ajax

我使用下面的代码收到服务器500错误。我还用测试文件测试了它,但仍然是500错误。该文件设置为644.

这是Ajax代码。

function paynlSubmitPayment(userid ,credits ,profile ,bankId) {
paynlSubmitForm = false;
var newwin = paynlPaymentPopup('/Paynl/paynl-loading.html');
var product = jQuery("input[name='selectedProduct']").val();

$.ajax({
    type: "POST",
    url: "/Paynl/paynl-api.php",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: {
        mode:'startPayment',
        product:product,
        profile:profile,
        idealBank:bankId,
        userid:userid,
        credits:credits
    }, 
    success: function(data) {
        if('TRUE' == data.result) {
            newwin.location.href = data.issuerUrl;
            newwin.focus();
        } else {
            newwin.close();
            alert(data.error);
        }
    },
    error: function(){
        newwin.close();
        alert('Fail');
    },
    complete: function() {
        paynlSubmitForm = true;
    }
});
} 
function paynlCheckFormSubmit() {
return paynlSubmitForm;
}

加载弹出窗口有效,但它显示错误“失败”部分。 我也试过把整个网址用http但仍然没有成功。 我可以发布php文件,但似乎错误是在Ajax的某处,因为测试文件也不起作用。

修改

我的PHP代码

<?php

# Include classes
include realpath(dirname(__FILE__)) . '/Paynl/Paynl.php';
require_once($_SERVER['DOCUMENT_ROOT'].'/includes/connect.php');

# Controleer of installer is doorlopen
if (!class_exists('PaynlConfigPPT') || !class_exists('PaynlConfigPPC')) {
trigger_error('Run installer first!', E_USER_ERROR);
die();
}


switch (strtoupper($_POST['mode'])) {
case 'STARTPAYMENT':
    try {
        # PPT transactie starten
        $paynlPPT = new PaynlPPT();
        $products = $paynlPPT->getProducts();

        # Bepaal bedrag aan de hand van de producten in de
        # config en het ID van het geselecteerde product
        $transactionValue = $products[$_POST['product']]['price'];

        # Bij ideal wordt een bank verwacht
        if (array_key_exists('idealBank', $_POST)) {
            if ((int) $_POST['idealBank'] <= 0) {
                # geen bank geselecteerd voor doorsturen naar internetbankieren.
                throw new PaynlException('Geen bank geselecteerd');
            }
            $idealBankId = (int) $_POST['idealBank'];
            $selectedProfile = PaynlPPT::PROFILE_ID_IDEAL;
        } else {
            # Geen ideal, dus bankId=null
            $idealBankId = null;
            $selectedProfile = (int) $_POST['profile'];
        }



        # Transactie submitten bij Pay.nl
        $paynlPPT->setProductId($_POST['product']);
        $data = $paynlPPT->startTransaction($transactionValue, $selectedProfile, $idealBankId);

        // CG - Insert Transaction Details

        mysql_query("INSERT INTO transactions(transid, amount, userid, pakket, credits, betaald, uts) VALUES('".$data['orderId']."','" . $transactionValue . "', '".$_POST['userid']."', '" . $_POST['product'] . "', '".$_POST['credits']."', 0, " . time() . ");") or die(mysql_error());

        // CG - Insert Transaction Details

    } catch (PaynlException $e) {
        $data = array(
            'result' => 'FALSE',
            'error' => $e->getMessage()
        );
    }
    echo json_encode($data);
    break;
}

3 个答案:

答案 0 :(得分:0)

HTTP代码500表示内部服务器错误。这意味着PHP脚本中的某些内容正在崩溃。 Ajax调用本身很好。

答案 1 :(得分:0)

您正在尝试从$_POST读取数据,但如果您将JSON发送给它,PHP将不会填充该数据。

你说:

contentType: "application/json; charset=utf-8",

这意味着&#34;此请求的内容是JSON&#34;。 PHP会相信你并且不会填充$_POST

由于您实际上并未发送JSON,只需删除该行。

答案 2 :(得分:-1)

通过AJAX返回的console.log(data)数据并删除:  AJAX选项中的contentType: "application/json; charset=utf-8"

这样,PHP错误消息将显示在控制台中。

适合我。