2016-05-12 4 views
1

私はループで(JSを使用して)一連の変数を生成していますが、現在のインデックスに基づいて.id.nameを割り当てています。各ループでは、jQuery.post()メソッドを使用してサーバーに要求を送信していますが、返される応答は空の変数に過ぎません。 は、ここでは、コードです:jQuery.post()がサーバーにデータを返すと空のレスポンスが返される

はJavaScript

for (var index = 0; index < 5; index++) { 

    var myVar = document.createElement('p'); 

    myVar.id = 'myVarID' + index; 

    myVar.name = 'myVarName' + index; 


    //Send request to server 
    $(document).ready(function(){ 

     var data = {}; 

     var i = 'ind'; 
     var id = myVar.id; 
     var name = myVar.name; 

     data[id] = name; 
     data[i] = index; 

     $.post("script.php", data, function(data){ 

      console.log("Server response:", data); 

     }); 

    }); 

} 

PHP

<?php 

    $index = $_POST['ind']; 

    $myVar = $_POST['myVarID'.$index]; 

    echo $myVar; 

?> 

応答:Server response: ''

私が代わりにJSコードで静的な指標を設定した場合、GE例えばので、ループを取り除くめの設定:

var index = 0; 

私が期待した結果を得る:Server response: myVarName0

ですが、なぜでしょうか?そして私はそれをどのように解決できますか?

答えて

0

それは削除正常に動作している

ソリューション:

$(document).ready() 

の作業コード

for (var index = 0; index < 5; index++) { 

    var myVar = document.createElement('p'); 

    myVar.id = 'myVarID' + index; 

    myVar.name = 'myVarName' + index; 


    //Send request to server 

    var data = {}; 

    var i = 'ind'; 
    var id = myVar.id; 
    var name = myVar.name; 

    data[id] = name; 
    data[i] = index; 

    $.post("script.php", data, function(data){ 

     console.log("Server response:", data); 

    }); 

} 
0

phpファイルが整っていると仮定します。私はこれを使用します。

function doThing(url) { 
getRequest(
    url, 
    doMe, 
    null 
    ); 
    } 
    function doMe(responseText) { 
    var container = document.getElementById('hahaha'); 
    container.innerHTML = responseText; 
    } 
function getRequest(url, success, error) { 
var req = false; 
try{ 
    // most browsers 
    req = new XMLHttpRequest(); 
} catch (e){ 
    // IE 
    try{ 
     req = new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch (e) { 
     // try an older version 
     try{ 
      req = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch (e){ 
      return false; 
     } 
    } 
} 
if (!req) return false; 
if (typeof success != 'function') success = function() {}; 
if (typeof error!= 'function') error = function() {}; 
req.onreadystatechange = function(){ 
    if(req .readyState == 4){ 
     return req.status === 200 ? 
      success(req.responseText) : error(req.status) 
     ; 
    } 
} 
var thing = "script.php?" + url; 
req.open("GET", thing, true); 
req.send(null); 
return req; 
    } 

そして、このようにそれを使用します。

doThing("myVarID="+myVar.id+"&i="+index); 

も、あなたがこのような何かにあなたのPHPを変更する必要があります。

<?php 
    $index = $_GET['ind']; 

    $myVar = $_GET['myVarID'.$index]; 

    echo $myVar; 

?> 

明らかに、このコードは、する必要がありますあなたのニーズに合わせて編集してください

この例では、ウェブページが応答するときにdoMe関数を実行しますID haha​​haの要素を応答テキストに変更しました。

これはあなたに賞金を得ることはできませんが、それは仕事を完了します。

+0

あなたの努力のおかげで、これは本当に私の質問への答えではありません。なぜ私のコードが静的な変数で動作しているのか、動的な動作ではないのかを理解しようとしています。 – leota

関連する問題