2011-09-01 3 views
2

Я новичок в JSON и AJAX, поэтому они искали решения и экспериментировали в течение нескольких дней, прежде чем приступать к заданию здесь. Я использую AJAX для обработки страницы PHP на submit. Он сохраняет информацию в порядке, но мне также нужна страница PHP, чтобы передать обратно вставленный идентификатор. Вот что я до сих пор.Проблемы с JSON и PHP

В успехе:

success: function(){    
    $('#popup_name img').remove(); 
    $('#popup_name').html('Saved'); 
    $('#fade , .popup_block').delay(2000).fadeOut(function() { 
     $('#fade, a.close').remove(); //fade them both out 
     $.getJSON(pathName, function(json){ 
      alert('You are here'); 
      alert("Json ID: " + json.id); 
     }); 
    }); 
} 

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

public static function doInsertQuery($sparamQuery="",$bparamAutoIncrement=true,$sparamDb="",$sparamTable=""){ 
//do the insert 
$iReturn = 0; 
$result = DbUtil::doQuery($sparamQuery); 
if(!$result){ 
    $iReturn = 0; 
} 
elseif(!$bparamAutoIncrement){ 
    $iReturn = DbUtil::getInsertedId(); 
} 
else{ 
    $iReturn = DbUtil::getInsertedId(); 
} 

//log the insert action 
//if not a client logged in- cannot log to client db 
if(Session::get_CurrentClientId() > 0){ 
    if($sparamTable != LogLogin::table_LOGLOGINS()){ 
    $oLog = new LogDbRequest(); 
    $oLog->set_Type(LogDbRequest::enumTypeInsert); 
    $oLog->set_Request($sparamQuery); 
    $oLog->set_RowId($iReturn); 
    $oLog->set_TableName($sparamTable); 
    $oLog->set_Before("NULL"); 
    $oLog->set_After(serialize(DbUtil::getRowCurrentValue($sparamDb,$sparamTable))); 
    $oLog->insertorupdate_LogDbRequest(); 
    } 
} 
echo json_encode($iReturn); 
return $iReturn; 
} 

Я надеюсь, что это имеет смысл. Здесь у меня полная потеря. Любая помощь вообще будет очень признательна! ~ Mike ~

+1

'эхо json_encode (массив ("ID"=> $ iReturn));' – thetaiko

+1

Что содержит '$ iReturn'? Он содержит 'array ('id' => 123);'? – Shef

+2

Я не думаю, что вам нужно $ .getJSON() в обратном вызове. Это вызовет другой вызов сервера. Просто введите ID как json на начальной странице результатов. – ZeissS

ответ

1

Это просто на самом деле. Функция success принимает аргумент, соответствующий ответу с сервера.

стороне клиента:

$.ajax({ 
    'url':'/path/to/script.php', 
    'dataType':'json', 
    'success':function(response){ //note the response argument 
     alert(response.id); //will alert the id 
    } 
}); 

стороне сервера:

<?php 
    //...previous stuff here... 
    $response = array('id' => $id); //where $id is the id to return to the client 
    header('Content-type: application/json'); //Set the right content-type header 
    echo json_encode($response); //Output array as JSON 
?> 
Смежные вопросы