javascript
  • php
  • jquery
  • 2017-04-19 7 views 0 likes 
    0

    この機能を使用すると、Webサイトはactions/create_random_profile.phpからユーザープロファイルを読み込みます。動的にロードされたコンテンツからテキストボックスの値を取得できません

    $(function() { 
    $('body').on('click','#random_profile',function(){ 
    //var msgid = $(this).attr("id"); 
    //var dataString4 = 'msgid=' + msgid; 
    $('#random_profile_area_loader').html('<img src="img/loader.gif" class="loading" />'); 
    $.ajax({ 
        type: "POST", 
        url: "actions/create_random_profile.php", 
        //data: dataString4, 
        cache: false, 
        success: function(data){ 
        if (data == 0) { 
        $('#random_profile_area').html('Not Sent!'); 
        } else { 
        $('#random_profile_area_loader').html(''); 
        $('#random_profile_area').append(data); 
        } 
        } 
    
    }); 
    return false; 
    }); 
    }); 
    

    すべてここで問題ありません。そして、これは私が複数のスクリプトをトリガすることができますので、私はユニークなIDを持っていなければならないことを知っているcreate_random_profile.php

    </php 
    Echo ' 
    <div class="col-md-2 created_profile"> 
    /////......./////// 
        <div class="form-group"> 
        <label for="email">Email:</label> 
        <input type="text" class="form-control" id="email" name="email" value="'.$email.'"> 
        </div> 
    /////......./////// 
    Echo '<button type="button" class="btn btn-default save_random_profile" id="'.$rand_identifier.'">Create this profile</button>'; 
    </div>'; 
    ?> 
    

    から来た私の出力の例です。私はそれを行う方法を知っています。問題はここにあります: すべての変数は未定義の値を返します。 私は私が各フォームのためにその固有の識別子を追加するときに問題がwhorseある

    $("input#bmonth").val(); 
    

    OR

    document.getElementById('bmonth').value; 
    

    または

    $("#bmonth").val(); 
    

    を試してみました。のは、私が

    <input type="text" id="bmonth22" value="3"> 
    

    から値を取得するが、それはどちらか動作しません

    $("#bmonth"+unique_identifier).val(); 
    

    を使用する必要があります= 22 そのVaRのunique_identifierを言ってみましょう。

    私は他のスクリプトでも動作すると言いますが、ここでは間違いを見ることはできません。私はコンテンツがdinamicallyロードされているが、私は$( 'ボディ')を使用しているので起こると思う。on()とそれはうまくいくはずです。何か案は?

    $(function() { 
    $('body').on('click','.save_random_profile',function(){ 
    var identifier_id = $(this).attr("id"); 
    $('.created_profile').html('<img src="img/loader.gif" class="loading" />'); 
    // var phcat = document.getElementById('phcat'+identifier_id).value; 
    //var phcat = $('#created_profile'+identifier_id).children().document.getElementById('phcat').value; 
    var phcat = "man.png"; 
        var phprofile = "man.png"; 
    /*var phcat = document.getElementById('phcat').value; 
    var phprofile = document.getElementById('phprofile').value;*/ 
    
    var byear = $("#byear").val();//document.getElementById('byear').value; 
    var bmonth = $("input#bmonth").val();//document.getElementById('bmonth').value; 
    var bday = $("input#bday").val();//document.getElementById('bday').value; 
    var country = $("input#country").val();//document.getElementById('country').value; 
    var email = $("input#email").val();//document.getElementById('email').value; 
    var password = $("input#password").val();//document.getElementById('password').value; 
    var username = $("input#username").val();//document.getElementById('username').value; 
    var interested_in = $("#interested_in").val();//document.getElementById('interested_in').value; 
    var sex = $("#sex").val();//document.getElementById('sex').value; 
    var status = $("#status").val();//document.getElementById('status').value; 
    var description = $("#description").val();//document.getElementById('description').value; 
    var dataString = 'phcat=' + phcat + '&phprofile=' + phprofile + '&interested_in=' + interested_in + '&sex=' + sex + '&status=' + status + '&description=' + description + '&byear=' + byear + '&bmonth=' + bmonth + '&bday=' + bday + '&country=' + country + '&email=' + email + '&password=' + password + '&username=' + username; 
    alert(dataString); 
    $.ajax({ 
        type: "POST", 
        url: "actions/save_random_profile.php", 
        data: dataString, 
        cache: false, 
        success: function(data){ 
        if (data == 0) { 
        $('.created_profile').html('Not Sent!'); 
        } else { 
        $('.created_profile').html(data); 
        } 
        } 
    }); 
    return false; 
    }); 
    }); 
    
    +0

    これは、this.serializeを使ってフォームを簡単にシリアル化することができます。これは、ajaxに手動で解析するjs変数の数を削除します。 – Akintunde007

    答えて

    0

    問題は簡単です。

    なぜあなたが未定義になっているのか、そこにないものにアクセスしようとしています。 $( "input#bmonth")にアクセスできるのは、それが存在する場合のみです。

    貼り付けたコードから私はこれが唯一のあなたは、ランダムなプロファイルを作成した後、ソリューションは$(「入力#1 bmonthに」)にアクセスすることです

    "actions/create_random_profile.php" 
    

    以下のURLを呼び出すことで、ランダムなプロファイルをロードした後、DOMになると思います。

    +0

    プロファイル作成後にのみアクセスしようとします。プロファイルが作成されると、関数を呼び出すためのボタンも作成されます。プロファイルが作成されていない場合は、ボタンをクリックしてください。 –

    関連する問題