programing

dataType json의 jQuery $.ajax 요청이 PHP 스크립트에서 데이터를 검색하지 않습니다.

easyjava 2023. 9. 21. 21:39
반응형

dataType json의 jQuery $.ajax 요청이 PHP 스크립트에서 데이터를 검색하지 않습니다.

해결책을 찾아봤지만 효과가 있는 것을 찾을 수가 없습니다.데이터베이스에서 많은 데이터를 가져온 다음 양식의 AJAX 자동 완성 입력 필드를 통해 가져오려고 합니다.이 일을 하기 위해 json을 사용하기로 결정했습니다. 왜 안 되죠?아니면 구분된 문자열을 다시 보내고 토큰화하는 방법을 생각해봤는데 나중에 생각해보면 훨씬 쉬웠고 두통을 덜 수 있었을 텐데...그래도 json을 쓰기로 했으니, 뭐가 잘못됐는지 계속 찾아봐야 할 것 같아요!get_member_function()이 실행되면 경보 대화 상자에 오류가 나타나고 "[object Object]"라고 표시됩니다.나도 GET 요청을 이용해서 시도해 본 적이 있고, 내용을 설정해서 시도해 본 적이 있습니다.application/json; charset=utf-8 ″를 입력합니다.아아, 주사위는 없습니다.제가 뭘 잘못하고 있는지 제안해주실 분 있나요?잘 지내, 피오트르.

저의 javascript/jQuery 기능은 다음과 같습니다.

function get_member_info()
   {

   var url = "contents/php_scripts/admin_scripts.php"; 
   var id = $( "select[ name = member ] option:selected" ).val();

   $.ajax(
   {

      type: "POST",
      dataType: "json",
      url: url,
      data: { get_member: id },
      success: function( response ) 
      { 

          $( "input[ name = type ]:eq( " + response.type + " )" ).attr( "checked", "checked" );
          $( "input[ name = name ]" ).val( response.name );
          $( "input[ name = fname ]" ).val( response.fname );
          $( "input[ name = lname ]" ).val( response.lname );
          $( "input[ name = email ]" ).val( response.email );
          $( "input[ name = phone ]" ).val( response.phone );
          $( "input[ name = website ]" ).val( response.website );
          $( "#admin_member_img" ).attr( "src", "images/member_images/" + response.image );

      },
      error: function( error )
      {

         alert( error );

      }

   } );

}

그리고 "contents/php_scripts/admin_scripts.php"의 관련 코드는 다음과 같습니다.

   if( isset( $_POST[ "get_member" ] ) )
   {

      $member_id = $_POST[ "get_member" ];
      $query = "select * from members where id = '$member_id'";

      $result = mysql_query( $query );

      $row = mysql_fetch_array( $result );

      $type = $row[ "type" ];
      $name = $row[ "name" ];
      $fname = $row[ "fname" ];
      $lname = $row[ "lname" ];
      $email = $row[ "email" ];
      $phone = $row[ "phone" ];
      $website = $row[ "website" ];
      $image = $row[ "image" ];

      $json_arr = array( "type" => $type, "name" => $name, "fname" => $fname, "lname" => $lname, "email" => $email, "phone" => $phone, "website" => $website, "image" => $image );

      echo json_encode( $json_arr );

   }

내 생각엔 이건...

PHP의 헤더() 함수를 사용하여 JSON을 JSON으로 보내 보십시오.

/**
 * Send as JSON
 */
header("Content-Type: application/json", true);

당신은 유효한 JSON을 통과하고 있지만, jQuery의 $.ajax는 헤더가 누락되었기 때문에 그렇게 생각하지 않습니다.

jQuery는 헤더가 없어도 괜찮았지만, 몇 가지 버전으로 변경되었습니다.

또한.

스크립트가 유효한 JSON을 반환하고 있는지 확인합니다.Firebug 또는 Google Chrome의 개발자 도구를 사용하여 콘솔에서 요청 응답을 확인합니다.

갱신하다

또한 코드를 업데이트하여 $_POST를 검사하여 sql 주입 공격을 방지하고자 합니다.오류 탐지 기능도 제공합니다.

if (isset($_POST['get_member'])) {

    $member_id = mysql_real_escape_string ($_POST["get_member"]);

    $query = "SELECT * FROM `members` WHERE `id` = '" . $member_id . "';";

    if ($result = mysql_query( $query )) {

       $row = mysql_fetch_array($result);

       $type = $row['type'];
       $name = $row['name'];
       $fname = $row['fname'];
       $lname = $row['lname'];
       $email = $row['email'];
       $phone = $row['phone'];
       $website = $row['website'];
       $image = $row['image'];

       /* JSON Row */
       $json = array( "type" => $type, "name" => $name, "fname" => $fname, "lname" => $lname, "email" => $email, "phone" => $phone, "website" => $website, "image" => $image );

    } else {

        /* Your Query Failed, use mysql_error to report why */
        $json = array('error' => 'MySQL Query Error');

    }

     /* Send as JSON */
     header("Content-Type: application/json", true);

    /* Return JSON */
    echo json_encode($json);

    /* Stop Execution */
    exit;

}

jQuery.parseJ를 사용해 보십시오.데이터를 받으면 SON.

type: "POST",
dataType: "json",
url: url,
data: { get_member: id },
success: function(data) { 
    response = jQuery.parseJSON(data);
    $("input[ name = type ]:eq(" + response.type + " )")
        .attr("checked", "checked");
    $("input[ name = name ]").val( response.name);
    $("input[ name = fname ]").val( response.fname);
    $("input[ name = lname ]").val( response.lname);
    $("input[ name = email ]").val( response.email);
    $("input[ name = phone ]").val( response.phone);
    $("input[ name = website ]").val( response.website);
    $("#admin_member_img")
        .attr("src", "images/member_images/" + response.image);
},
error: function(error) {
    alert(error);
}

$.ajax error세 function합니다.

error: function(xhr, status, thrown)

첫 번째 파라미터가 아닌 두 번째 파라미터와 세 번째 파라미터를 덤프해야 원인을 찾을 수 있습니다.

에도 맥허비 의에를 json_encode( $json_arr, JSON_FORCE_OBJECT );만약 당신이 PHP 5.3에 있다면...

Try this...  
  <script type="text/javascript">

    $(document).ready(function(){

    $("#find").click(function(){
        var username  = $("#username").val();
            $.ajax({
            type: 'POST',
            dataType: 'json',
            url: 'includes/find.php',
            data: 'username='+username,
            success: function( data ) {
            //in data you result will be available...
            response = jQuery.parseJSON(data);
//further code..
            },

    error: function(xhr, status, error) {
        alert(status);
        },
    dataType: 'text'

    });
        });

    });



    </script>

    <form name="Find User" id="userform" class="invoform" method="post" />

    <div id ="userdiv">
      <p>Name (Lastname, firstname):</p>
      </label>
      <input type="text" name="username" id="username" class="inputfield" />
      <input type="button" name="find" id="find" class="passwordsubmit" value="find" />
    </div>
    </form>
    <div id="userinfo"><b>info will be listed here.</b></div>
  session_start();
include('connection.php');

/* function msg($subjectname,$coursename,$sem)
    {
    return '{"subjectname":'.$subjectname.'"coursename":'.$coursename.'"sem":'.$sem.'}';
    }*/ 
$title_id=$_POST['title_id'];
$result=mysql_query("SELECT * FROM `video` WHERE id='$title_id'") or die(mysql_error());
$qr=mysql_fetch_array($result);
$subject=$qr['subject'];
$course=$qr['course'];
$resultes=mysql_query("SELECT * FROM course JOIN subject ON course.id='$course' AND subject.id='$subject'");
$qqr=mysql_fetch_array($resultes);
$subjectname=$qqr['subjectname'];
$coursename=$qqr['coursename'];
$sem=$qqr['sem'];
$json = array("subjectname" => $subjectname, "coursename" => $coursename, "sem" => $sem,);
header("Content-Type: application/json", true);
echo json_encode( $json_arr );


 $.ajax({type:"POST",    
                  dataType: "json",    
                   url:'select-title.php',
                   data:$('#studey-form').serialize(),
                   contentType: "application/json; charset=utf-8",
                   beforeSend: function(x) {
        if(x && x.overrideMimeType) {
            x.overrideMimeType("application/j-son;charset=UTF-8");
        }
    },
                   success:function(response)
                  {
                    var response=$.parseJSON(response)
                    alert(response.subjectname);
                    $('#course').html("<option>"+response.coursename+"</option>"); 
                    $('#subject').html("<option>"+response.subjectname+"</option>");

                  },
                  error: function( error,x,y)
                  {

                  alert( x,y );

              }
                   });

최신 버전(1.3.x 이상)을 사용하는 경우 함수 parseJ에 대해 자세히 알아야 합니다.아들! 저도 같은 문제를 겪었습니다.이전 버전 사용 또는 코드 변경

success=function(data){
  //something like this
  jQuery.parseJSON(data)
}

누군가에게 도움이 될지도 모르겠네요내가 바보같아서 말도 안했어요var_dump('testing');제가 JSON에 요청한 기능은 실제로 요청이 들어왔는지 확인하기 위해서였습니다.이 메아리 또한 예상되는 부분으로서json응답 및 응답을 포함dataType로 설정.json정의된, 요청이 실패합니다.

언급URL : https://stackoverflow.com/questions/5147522/jquery-ajax-request-of-datatype-json-will-not-retrieve-data-from-php-script

반응형