私のajaxレスポンスで変数 'dimensions'にアクセスしようとしていますが、取得できません。私はこの変数をグローバルにしたくない。これは動作するはずjavascript、jqueryのスコープ変数
var dimensions="sample";
私のajaxレスポンスで変数 'dimensions'にアクセスしようとしていますが、取得できません。私はこの変数をグローバルにしたくない。これは動作するはずjavascript、jqueryのスコープ変数
var dimensions="sample";
この場合、あなたはdimensions
にアクセスすることができますajaxコールバックとajaxリクエストを開始した直後のコードからの変数です。変数は、これらのコンテキストの両方でアクセス可能です。
タイミングは問題の原因となる可能性が最も高いです。 success
メソッドは、ajax要求が完了した後で非同期に実行されます。これは後で実行するように見るのが最善です。ただし、$.ajax
コール直後のコードはすぐに実行されます。したがって、実行時にdimensions
変数にあるsuccess
ハンドラからの影響は表示されません。
success
メソッドで計算されたdimensions
の値で実行するコードがある場合は、そのコードをsuccess
コールバックから呼び出す必要があります。たとえば、
$('#submittext').click(function(){
var handleNewDimensions = function (dimensions) {
// Code that used to be after the $.ajax line
}
$.ajax({
type: "GET",
url: "bin/getcontentsize.php",
data: findContentsize,
success: function(response){
var dimensions = doTheCalculation(...);
// Call the code which needs to deal with the new dimensions
handleNewDimensions(dimensions);
}
});
それは私の問題のおかげでの解決です感謝します。ありがとう –
寸法に変数の値を割り当て、それを再度テストしている
$(document).ready(function(){
$('#submittext').click(function(){
var dimensions = 1;
$.ajax({
type: "GET",
url: "bin/getcontentsize.php",
data: findContentsize,
success: function(response){
alert(dimensions);
}
});
//so i can use here
});
});
を::次は私のコード
$(document).ready(function(){
$('#submittext').click(function(){
var dimensions;
$.ajax({
type: "GET",
url: "bin/getcontentsize.php",
data: findContentsize,
success: function(response){
//want to access dimensions here to assign response and some calculation(but not able to access it)
}
});
//so i can use here
});
});
実行すると問題が発生します。
$(document).ready(function(){
$('#submittext').click(function(){
var dimensions="1";
$.ajax({
type: "GET",
url: "bin/getcontentsize.php",
data: findContentsize,
success: function(response){
dimensions = "2";
}
});
//!!!!Attention
alert(dimensions); // result is "1", not "2"
});
});
まず、コードが既に実行されています。その後、あなたの$ .ajaxが実行を開始します。
あなたはそれにアクセスできないということを意味しますか?エラー、間違った値などを生成しますか? – JaredPar
ディメンションには正常にアクセスできるはずです。しかし、それは決して初期化していないので、「未定義」になります。 – samjudson
@samjudsonはいそれは定義されていません –