javascript
  • php
  • jquery
  • mysql
  • ajax
  • 2017-02-23 41 views 1 likes 
    1

    ローカルのDBサーバーにデータを送信しようとしていますが、送信しようとすると400のBad requestエラーが発生します。Jquery Ajaxが400のBADリクエストを返す

    var studentEmail = "[email protected]"; 
          var dataString = '&questionNumber='+ temp + '&answer='+ value + '&email='+ studentEmail; 
    
    
          $.ajax({ 
          type: "POST", 
          dataType:'json', 
          url: "js/dbcon.php", 
          data: JSON.stringify(dataString), 
          processData: false, 
          contentType: "application/json; charset=utf-8" 
          }); 
    

    、これはPHPのファイルです

    <?php 
    $connection = mysql_connect("127.0.0.1", "root", "root"); // Establishing Connection with Server.. 
    $db = mysql_select_db("db", $connection); // Selecting Database 
    //Fetching Values from URL 
    $questionNumber=$_POST['questionNumber']; 
    $answer=$_POST['answer']; 
    $email=$_POST['email']; 
    //Insert query 
    $query = mysql_query("INSERT INTO answers (questionNumber,studentAnswer,studentEmail) VALUES ($questionNumber,$answer,$email)"); 
    echo "succesfully posted"; 
    mysql_close($connection); // Connection Closed 
    ?> 
    

    誰もが私が間違ってやっているかを見ることができますか?

    ありがとうございます!

    +0

    ps POSTをGETに変更しても動作しますが、DBにデータを挿入しません。 – faradji

    +0

    dbcon.phpがjsフォルダにあることは確かですか?むしろ奇妙に思えます... – markvdlaan93

    +0

    URL内で '@'という文字列をエスケープする必要があります。 – evolutionxbox

    答えて

    0

    JSON.stringify()objectをjson stringに変換する方法です。

    のでdataString変数はjavascriptのobjectでなければなりません:

    var data ={questionNumber:temp ,answer: value ,email:studentEmail}; 
    

    AJAX

    $.ajax({ 
        type: "POST", 
        dataType:'json', 
        url: "js/dbcon.php", 
        data: JSON.stringify(data), 
        processData: false, 
        contentType: "application/json; charset=utf-8" 
    }); 
    
    +0

    あなたの返事をありがとう、私はあなたが言った変更をしたが、今私は404エラーを取得する代わりに、私はまた、PHPファイルがjsフォルダにあることを確認しました – faradji

    +0

    それはあなたのファイルを見つけることができないと思うが、私の変更は、ファイルを見つけた場合は動作するはずです。 –

    +0

    @RiggsFollyあなたが 'contentType:" application/json; charset = utf-8 "'を使用し、送信しているデータのタイプを表しているため、あなたの言ったことは間違っています。 –

    0

    あなたがあなたのphpファイルに$ _GETと$ _POSTを交換する必要が取得するためにポストを変更した場合。

    0

    両方のPOSTのために正常に動作し、要求

    var studentEmail = "[email protected]"; 
    $.ajax({ 
         type: "POST", 
         dataType:'json', 
         url: "js/dbcon.php", 
         data: {questionNumber:temp, answer:value, email: studentEmail}, 
         processData: false, 
    
    }); 
    

    を取得するデータを渡すための簡単な方法は、今のjQueryがあり、すべてのハードワークを行い、どのようなフォーマットへのデータの完全なオブジェクトに変換されるが要求されますあなたはajax要求をこのように送信することができ、要求

    0

    をPOSTまたはGET:

    var studentEmail = "[email protected]"; 
          $.ajax({ 
          type: "POST", 
          dataType:'json', 
          url: "js/dbcon.php", 
          data: ({'questionNumber':temp,'answer':value, 'email':studentEmail }), 
          processData: false, 
          contentType: "application/json; charset=utf-8" 
          }); 
    

    また、PHPファイルはを返す必要があります文字列も同様です。

    echo "succesfully posted"; 
    

    は有効なjson答えではありません。このような何か

    戻る:

    $arr = array('success' => true, 'answer' => "succesfully posted"); 
    
    echo json_encode($arr); 
    

    はこちらを参照:http://php.net/manual/de/function.json-encode.php

    あなたがデータベースに挿入する前に、入力されたデータを検証する必要があります。

    関連する問題