2013-11-09 4 views
0

Вот мой Java файл сценария:JSON, JQuery и Ajax разбора вопрос

$('#addSchoolForm').trigger("reset"); 

//$(document).ready(function() { 
$(function() { 
    $("#dialog").dialog({ 
     autoOpen: false, 
     maxWidth:600, 
     maxHeight: 350, 
     width: 500, 
     height: 300, 
    }); 

    $("#addSchool").on("click", function() { 
     $("#dialog").dialog("open"); 
    }); 

    $("#addSchoolForm").submit(function(e) { 
     e.preventDefault(); 
     $("#dialog").dialog("close") 
     var postData = jQuery(this).serialize(); 
     $.ajax({ 
      type: "POST", 
      url: "AddSchools.php", 
      data: postData, 
      success: function(data){ 
       alert(data); } 
     }); 
    }); 

    $("#editSchool").submit(function(e) { 
     e.preventDefault(); 
     var editData = jQuery(this).serialize(); 
     $.ajax({ 
      type: "POST", 
      url: "GetSchoolID.php", 
      data: editData, 
      dataType: 'json', 
      success: function(data){ 


       var schoolID = $.parseJSON(data); 
       alert("success"); 
       alert(schoolID.name); 

       //alert(data["json"]); 
       //alert(data); 

       //document.addSchoolForm[sname].value = data[0].name; 
       //document.addSchoolForm[abbrev].value = data[abbrev]; 
       //document.addSchoolForm[abbrev].value = data[0].abbrev; 
      } 

      alert(schoolID.name); 
     }); 
     //$("#dialog").dialog("open"); 
    }); 
}) 

А вот мой прибудете schoolID PHP файл

<?php 
$school_id = $_POST['school_id']; 


$db = mysqli_connect("localhost", "root", "imagroup123","mytrack"); 

if(!$db){ 
    exit("Error in database connection"); 
    echo("couldn't connect to database"); 
} 
else{ 
    $q = "SELECT * FROM `School` WHERE `SchoolID`='$school_id'"; 
    $schoolresults = mysqli_query($db,$q); 

    $row = mysqli_fetch_assoc($schoolresults); 
    $school["name"] = $row['SchoolLong']; 
    $school["abbrev"] = $row['SchoolShort']; 

    echo json_encode($school); 

    } 


?> 

Когда я только проверил файл PHP с jsonlint.com I получить правильный json-объект, но он не переносится через файл javascript. Я довольно новичок в этом, поэтому я довольно сосать с этой проблемой. Я также хочу добавить данные в значения формы, а затем открыть диалоговую форму после.

+0

Какой из двух запросов Ajax вы спрашивать о? И выполняете ли 'alert()' s в ваших обработчиках успеха Ajax? Получаете ли вы какие-либо ошибки в консоли браузера? – nnnnnn

+1

Поскольку вы указали 'dataType: 'json'', вы не должны вызывать' $ .parseJSON() '- jQuery делает это автоматически для вас. – Barmar

ответ

1

Изменение:

 success: function(data){ 
      var schoolID = $.parseJSON(data); 

к:

 success: function(schoolID){ 

потому что $.ajax автоматически вызывает $.parseJSON() при указании dataType: 'json'.

0

Вот структура бэкенд PHP, что я использую все время:

$query = " SELECT * 
      FROM school 
      WHERE SchoolID = $school_id; 
$result = mysqli_query($cxn, $query) or die ("could not query database 1"); 

if (mysqli_num_rows($result) > 0) 
{ 
    $row = mysqli_fetch_array($result); 
    $variablestopass = array 
    (
      'schoolname' => $row['SchoolLong'], 
     'schoolabbrev' => $row['SchoolShort'], 
    ); 
    echo json_encode($variablestopass);} 
else 
    { echo "Error selection id"; } 

А вот некоторые JS называть его и читать:

$.ajax({ 
     type: 'POST', 
     url: 'thenameofyourfile.php'; 
     data: {schoolid: schoolid}, 
     dataType: 'json' 
     }) 
     .done(function() { alert("Got it!""); 
          Do other stuff here 
          }) 
     .fail(function(jqXHR, textStatus, errorThrown){ 
      console.log(jqXHR.responseText, textStatus, errorThrown); 
    }); 
+0

Я избавился от вызова синтаксического разбора, но когда я пытаюсь вывести название школы, поле предупреждения пусто. Я делаю это: alert (data.schoolname). Это неправильно? – user2970834

+0

Я сделал обратный вызов «.done» выше очень простой в качестве примера (просто предупреждение). Чтобы на самом деле перезвать «данные», вам нужно указать имя, которое вы хотите для данных, в функцию(). .done (функция (данные) {alert (data.varname); ... другие команды ...}) ;. Я сделаю полный и даю вам ссылку через несколько минут. – TimSPQR

+0

Вот страница, которую я только что сделал с фрагментом кода из одного из моих проектов. Он объясняет каждую строку. https://sites.google.com/site/timspqr/home/programs/javascript-code/example-ajax-with-callback – TimSPQR

Смежные вопросы