2016-08-05 17 views
-1

編集:私がajax()で必要としたことを実行して解決しました。ajax応答オブジェクトからresponseJSONを取得するにはどうすればいいですか?

ここに私のコードがあります。私はいくつかの関連するプロパティが設定されているかどうかを確認するためにクエリを実行するためにajaxを使用してPHPで記入されているいくつかのidsを取得しようとしています。私はresponseJSONプロパティにアクセスしたいですが、私が直接アクセスしようとすると、定義されていません。しかし、変数全体をコンソールに書き込むだけであれば、そこにあるので、何かが足りないと思う。私はグローバル変数にレスポンスをコピーしようとしましたが、それは私が最初に設定した空の値を返します。どのようにして回答にアクセスできますか?

JS

<script> 
var valid; 
$(document).ready(function(){ 

//get all appointment numbers 


    count=0; 
appointment_nums = []; 
$('.mgrid_table > tbody > tr').each(function() { 

    var temp = ($(this).find('td').eq(3).find('label').html()); 
    appointment_nums.push(temp); 
    }); 
    appointment_nums = appointment_nums.filter(function(n){ return n != undefined }); 
    appointments = appointment_nums.length; 

    scheduled = $.ajax({ 
     type:"post", 
     url: "../testrequest.php", 
     data : {appointment_nums:appointment_nums}, 
     dataType:'json', 
     done:function(response){ 
     valid=response; 
     } 
    }) 
    console.log(valid); 
    console.log(scheduled); 


    $('table:nth-of-type(2) > tbody > tr > td:nth-of-type(2)').each(function() {      

    if($(this).children().length < 1){ 
    $(this).append('<a href="index.php?doctor=test&a='+appointment_nums[count]+'">Schedule Appointment </a>'); 
    } 
    count = count + 1 ; 
    }); 


}); 
</script> 

PHP

$appointment_numbers = (isset($_POST['appointment_nums'])) ?  $_POST['appointment_nums']:0; 
if ($appointment_numbers!=0){ 
$appointments_scheduled =array(); 
foreach ($appointment_numbers as $apt_num){ 
$sql = 'SELECT event_id FROM '.TABLE_APPOINTMENTS_SCHEDULING.' WHERE appointment_number = "'.$apt_num.'"'; 
    $res = database_query($sql); 
array_push($appointments_scheduled, empty($res)); 

} 

編集:私はこれが重複しているとは思わない、それは同じ情報を得るためのわずかに異なる方法ですが、私の問題ではありません同じ。どこでもconsole.log(予定)を実行すると、すべての設定を含む応答オブジェクトが取得されます。だから私がデータを見ると、それがそこになければならず、それは応答がなされた後に表示されている。しかし、私はオブジェクトにアクセスすることはできません、私は何を意味するかを示すために画像を置くでしょう。また、有効でスケジュールされたものは、同じ情報を取得しようとする2つの試みです。他の投稿は私がそれをやろうとしている方法で助けにはならない、私はチェックした。あなたの$.ajax方法で
enter image description here

答えて

1

、プロパティdoneは、正常な応答の後に実行されるコールバック関数です。 jQueryのAjaxの方法hereについて

scheduled = $.ajax({ 
    type:"post", 
    url: "../testrequest.php", 
    data: {appointment_nums:appointment_nums}, 
    dataType: 'json', 
    done: function(response){ 
     valid=response; 
     console.log(valid); 
    } 
}) 

より:そこだけとよりも、あなたのJSONにアクセスすることができます。

async: false 

非同期(デフォルト:真)タイプ:あなたが設定する必要があるよりも、非同期AJAX呼び出しを使用したい場合には

ブールをデフォルトでは、すべての要求は(非同期 に送信されますつまり、このデフォルトではtrueに設定されています)。 同期要求が必要な場合は、このオプションをfalseに設定します。クロスドメイン要求 とdataType: "jsonp"要求は同期操作をサポートしていません。 同期要求は、ブラウザが一時的にロックされている可能性があります( )。