【问题标题】:500 (Internal Server Error) on jQuery POSTjQuery POST 上的 500(内部服务器错误)
【发布时间】:2015-05-31 17:49:10
【问题描述】:

我正在向 PHP 脚本发送带有 jQ​​uery 库的 POST 请求,您将在下面找到脚本。结果我收到 500 内部服务器错误,有人知道如何解决吗?

我如何发送表单:

    $.post(
        "post.php",
        $( "#form" ).serialize()
    ).done(function( data ){
            generateFinishPage( data.link );
    });

我的 post.php

<?php
    error_reporting(E_ALL); 
    ini_set("display_errors", 1);
    $pdo = new PDO('...');
    
    $error = Array();

    if(empty($_POST['link']))
        $error [] = 'Er is geen link geselecteerd!';
        
    if(empty($_POST['sitename']))
        $error [] = 'Er is geen domein geselecteerd!';
        
    if(empty($_POST['image']))
        $error [] = 'Er is geen image geselecteerd!';
        
    $selectQuery = $pdo->query('SELECT * FROM trolls WHERE url_text="' . $_POST['url'] . '" AND url_domein="' . $_POST["sitename"] . '"');
    if($selectQuery->rowCount() == 1)
        $error [] = 'Dezelfde link bestaat al!';
        
    if(count($error) == 0){
        $query = $pdo->query('INSERT INTO trolls (created_time, swf_theme, url_text, url_domain, creator_ip, creator_name, creator_text, creator_email) 
            VALUES (:created_time, :swf_theme, :url_text, :url_domain, :creator_ip, :creator_name, :creator_text, :creator_email)');
        $query->execute(
            array(
                ':created_time'     =>  date('d-m-o'),
                ':swf_theme'            =>  $_POST['image'] . ".swf",
                ':url_text'             =>  explode('/', $_POST['url'])[1],
                'url_domain'            =>  explode('/', explode(".", $_POST['url'])[1])[0],
                ':creator_ip'           =>  $_SERVER['REMOTE_ADDR'],
                ':creator_name' =>  $_POST['creator_name'],
                ':creator_text'     =>  $_POST['creator_text'],
                ':creator_email'    =>  $_POST['creator_email']
            )
        );
        echo json_encode(array("link" => $_POST['url']));
    } else {
        echo json_encode(array("link" => array($error));
    }
    
    $pdo = null;

发送的表单数据:

网站名称:lnstagram.nl

链接:测试

图片:安妮

创建者名称:测试

creator_email:test@test.nl

creator_text:测试

谢谢!

【问题讨论】:

  • 服务器日志是怎么说的?
  • @user3584460 它在共享主机上,我在哪里可以找到它们?
  • 取决于托管/公司的类型。但是,您不太可能无法访问它们,因此如果您无法在控制面板中找到它们,您可以询问支持人员。
  • 检查您的选择查询......是“url_domein”还是“url_domain”
  • @IndraKumarS 你是对的!我改了谢谢!但我仍然收到 500 错误和空白页面:s

标签: php jquery http-post


【解决方案1】:

检查您的选择查询....是“url_domein”还是“url_domain”?

你想在你的插入方法中做什么?

我看不到任何准备好的语句但是你调用了执行方法?

 $query->execute(
        array(
            ':created_time'     =>  date('d-m-o'),
            ':swf_theme'            =>  $_POST['image'] . ".swf",
            ':url_text'             =>  explode('/', $_POST['url'])[1],
            'url_domain'            =>  explode('/', explode(".", $_POST['url'])[1])[0],
            ':creator_ip'           =>  $_SERVER['REMOTE_ADDR'],
            ':creator_name' =>  $_POST['creator_name'],
            ':creator_text'     =>  $_POST['creator_text'],
            ':creator_email'    =>  $_POST['creator_email']
        )
    );

尝试像这样更改查询...使用准备

$query = $pdo->prepare('INSERT INTO trolls (created_time, swf_theme, url_text, url_domain, creator_ip, creator_name, creator_text, creator_email) 
        VALUES (:created_time, :swf_theme, :url_text, :url_domain, :creator_ip, :creator_name, :creator_text, :creator_email)');

使用 try catch 块进行查询以了解错误在哪里

try {
       // query here
       } catch (PDOException $pe) {
          die("Error:" . $pe->getMessage());
      }

【讨论】:

  • 感谢您的关注!我更改了它,并且还在选择查询中将 url_domein 更改为 url_domain 。仍然收到 500 错误。
【解决方案2】:

直接访问你的 post.php,你会发现真正的错误。并且不要忘记在你的 post.php 顶部显示错误

error_reporting(E_ALL); nullini_set('display_errors', '1');

【讨论】:

  • 如果我尝试这个,我会得到一个空白页面,抱歉忘了告诉你!
  • 奇怪。我无法检查您的 pdo 查询,以确保您的脚本在 pdo 查询旁边工作 if(count($error) == 0){ echo "query";并在其中命令任何查询。我建议 pdo 异常类php.net/manual/en/class.pdoexception.php
猜你喜欢
  • 2019-12-10
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 2018-10-10
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
相关资源
最近更新 更多