进行AJAX调用时出现500内部服务器错误

时间:2016-06-14 17:27:20

标签: javascript php jquery ajax sugarcrm

问题:

我在发出AJAX请求时收到500内部服务器错误,并且我在Chrome控制台中找回了这个错误,我不明白我做错了什么,我是新手编写AJAX调用并处理它们用PHP:

{"readyState":4,"responseText":"<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>500 Internal Server Error</title>\n</head><body>\n<h1>Internal Server Error</h1>\n<p>The server encountered an internal error or\nmisconfiguration and was unable to complete\nyour request.</p>\n<p>Please contact the server administrator at \n webmaster@mywebdomain.com to inform them of the time this error occurred,\n and the actions you performed just before this error.</p>\n<p>More information about this error may be available\nin the server error log.</p>\n<p>Additionally, a 500 Internal Server Error\nerror was encountered while trying to use an ErrorDocument to handle the request.</p>\n<hr>\n<address>Apache/2.4.18 (Unix) OpenSSL/1.0.1e-fips mod_jk/1.2.37 mod_bwlimited/1.4 Server at mywebdomain.com Port 80</address>\n</body></html>\n","status":500,"statusText":"Internal Server Error"}

这是javascript(我想补充说,我觉得奇怪的是,当我们服务器上的所有内容都是'https'时,似乎想要'http',如果我改为'https',那么它会带回'无法访问 - Control-Allow-Origin存在'...废话,这是真的,我在标题中指定,不确定是否因为这是相同的域名):

$.ajax({
      url: 'http://mywebdomain.com/admin/custom/modules/cac_customize_agent_comp/views/getID.php',
      method: 'POST',
      dataType: 'text',
      data: {wnID: $("#wn_writing946b_number_ida").val(), pcgID: $("#aos_products_cac_customize_agent_comp_1aos_products_ida").val()}
    })
    .done(function(response) {
       console.log("response");
       $("#displayText").html(response);
    })
    .fail(function(jqXHR, textStatus, errorThrown) {
       console.log(JSON.stringify(jqXHR));
       console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
       $("#displayText").html("There was a problem retrieving the records...");
    })
    .always(function() {
       console.log("complete");
});

这是php文件:

<?php

header('Access-Control-Allow-Origin: *');
header('content-type: text/html; charset: utf-8');

$wnID = $_POST['wnID'];
$pcgID = $_POST['pcgID'];

function getDefaultPercentage($wnID, $pcgID){
        $sql = "SELECT wn_writing_number_cstm.title_c
            FROM wn_writing_number_cac_customize_agent_comp_1_c 
            RIGHT OUTER JOIN wn_writing_number_cstm ON wn_writing_number_cac_customize_agent_comp_1_c.wn_writing946b_number_ida = wn_writing_number_cstm.id_c
            WHERE wn_writing_number_cstm.id_c = '" . $wnID . "'";

            $result = $GLOBALS['db']->query($sql);

            while($row = $GLOBALS['db']->fetchByAssoc($result) ){
                $titleWN = $row['title_c'];
            } //end while


        $sql = "SELECT pcg_product_comp_grid_cstm.title_c, pcg_product_comp_grid_cstm.percentage_c
                FROM aos_products_pcg_product_comp_grid_1_c 
                LEFT OUTER JOIN pcg_product_comp_grid_cstm ON aos_products_pcg_product_comp_grid_1_c.aos_products_pcg_product_comp_grid_1pcg_product_comp_grid_idb = pcg_product_comp_grid_cstm.id_c
                WHERE aos_products_pcg_product_comp_grid_1_c.aos_products_pcg_product_comp_grid_1aos_products_ida = '" . $pcgID . "'";

            $result = $GLOBALS['db']->query($sql);

            while($row = $GLOBALS['db']->fetchByAssoc($result) ){
                $titlePCG = $row['title_c'];
                $percentage = $row['percentage_c'];
            } //end while

        if($titlePCG == $titleWN){

            $fullTitle = '';

            switch ($titlePCG) {
                case "TR":
                    $fullTitle = 'Trainee';
                    break;
                case "SA":
                    $fullTitle = 'Sub-Agent';
                    break;
                case "A":
                    $fullTitle = 'Agent';
                    break;
                case "GA":
                    $fullTitle = 'General Agent';
                    break;
                case "MGA":
                    $fullTitle = 'Managing General Agent';
                    break;
                case "FMO":
                    $fullTitle = 'Field Marketing Organization';
                    break;
                case "DM":
                    $fullTitle = 'District Manager';
                    break;
                case "RVP":
                    $fullTitle = 'Regional Vice President';
                    break;
                default:
                    "";
            } //end switch

        } //end if

        if($titlePCG != '' && $titleWN != ''){
            $textToOutput = $fullTitle . ": " . $percentage . "% is the default percentage.";
        }
        else {
            $textToOutput = "There was a problem retrieving the records...";
        }

        return $textToOutput;

    } //end getDefaultPercentage function

$textToOutput = getDefaultPercentage($wnID, $pcgID);

echo $textToOutput;


?>

以下是我从错误日志中获取的php错误:

[Tue Jun 14 14:25:37.752301 2016] [core:error] [pid 7823] [client XX.XX.XXX.XX:XXXXX] End of script output before headers: getID.php, referer: http://mywebdomain.com/admin/index.php
[Tue Jun 14 14:25:39.347480 2016] [:error] [pid 7822] [client XX.XX.XXX.XX:XXXXX] SoftException in Application.cpp:256: File "/home/mywebdomain/public_html/admin/custom/modules/cac_customize_agent_comp/views/getID.php" is writeable by group, referer: http://mywebdomain.com/admin/index.php
[Tue Jun 14 14:25:39.347557 2016] [core:error] [pid 7822] [client XX.XX.XXX.XX:XXXXX] End of script output before headers: getID.php, referer: http://mywebdomain.com/admin/index.php

2 个答案:

答案 0 :(得分:2)

我的问题的答案是权限问题。

我将文件移回核心目录,并决定忘记尝试在两者之间的每个文件夹上获得权限,而bam就像魅力一样。

Case in Point,当您从直接导航到实际网址时收到500错误时,权限可能是可疑的。

此外,我不需要包含的标题。

答案 1 :(得分:0)

您的代码中存在一些语法错误!这就是显示500的原因。

您很可能必须在display_startup_errors=1apache.conf中启用php.ini或执行ini_set();

P.S 再寻找一些blahblah_error=0并更改为blahblash_error=1,您就完成了。

在进行任何这些更改后,不要忘记重启apache