2017-06-23 13 views
0

こんにちはすべて私はPHPとAJAXとそのすべての良いものを初めて使い慣れているので、ここから自分のコードで進める方法がちょっとわかりません。PHP POST:配列からデータ変数を動的に設定する

私は送信されているフォームを持っており、フィールドの値を取得するためのフォームラベルを含む配列(サブカテゴリ)があります。フィールドと値は、ユーザーがアップロードするテキストファイルに基づいて動的に作成されているので、自分が何であるかを知る方法はありません。私がやろうとしている何

var arrayLength = subcategories.length; 
for (var i = 0; i < arrayLength; i++) { 
    var eachfield = subcategories[i]; 
    //Do something 

    //@C: selector is working fine, cleaning input 
    var eachfield = $('#' + eachfield).val().trim(); 

    //push the appropriate values with the fixed stuff to a new array 
    values.push(eachfield); 
} 

は、AJAXやPOSTを使用してデータをいくつかの名前にこれらの変数を設定し、$を介してそれらを送信することになりました。

静的にすべてを設定していた場合は、次のようなものがあります。

var data = { 
    dimitypedata: dimitype, 
    densitydata: density, 
    velocitydata: velocity, 
    temperaturedata: temperature, 

    submitbtnclicked: "submitted" 
}; 

//using the data and sending it through a post with promise handling 
$.ajax({ 
    type: 'POST', 
    url: "controller.php", 
    data: data, 
    success: function(response) { 
    //alert("worked"); 
    //console.log(response); 
    alert(response); 
    }, 
    error: function() { 
    alert("There was an error submitting the information"); 
    } 
}); 

私はこれらの2を混合する方法が非常にわからないんだけど、それがために混乱していない、まだPOSTおよびAJAX呼び出しを持つことは素晴らしいことを得ることで、部分的かもしれません。

EDIT:私の質問は少し不明だったようです(最初の郵便は申し訳ありません)。私はHTMLフォームフィールドから取り出した値を動的にプッシュしようとしています。問題は、ユーザーがサイトにアップロードする内容(フォームとフィールドの両方)に応じてフォームが生成されることです。最終的な目標は、ユーザーがアップロードしたテキストファイルに基づいて動的に生成されたフォームを編集できるようにすることです送信ボタンをクリックした後でGUI上で編集した後に新しいテキストファイルを生成できるようになりました。静的であればこれを行うことができますが、私は何かを知りません。フォームが含まれます。

私のAJAX呼び出しで使用できるように私のデータオブジェクトにしようとしています。変数が静的であれば次のステップで使用する少しのPHPコードです:

if(isset($_POST['submitbtnclicked']) && $_POST['submitbtnclicked'] == 'submitted') { 
//new instance of model for use 
    $model = new model(); 

$dimitypedata = $_POST['dimitypedata']; 
$densitydata = $_POST['densitydata']; 
$velocitydata = $_POST['velocitydata']; 
$temperaturedata = $_POST['temperaturedata']; 
+0

問題であり、正確には何?私たちはどのように手助けをする必要があります。 – KyleS

+0

まずPHPコードですか?どのようなデータの種類は、あなたのPHPから受け取ることを期待? –

+0

@Kyle私はもう少し明確にするために質問を編集しました。問題は、フォームが動的に生成されるため、フィールドと値がどのようになるか(またはどれくらいのものがあるか)わからないため、それらを動的に生成されたデータオブジェクトにプッシュする方法が必要です。私はそのように静的に行う方法を知っていますが、フォームが動的に生成されるので、オブジェクトもあまりにも大きくなり、失われます。 – Pary

答えて

0

正確な回答私たちは、 "サブカテゴリ"配列の様子を見る必要があります。

私が正しく理解していれば、配列(値)ではなくオブジェクトに値を入れたいと思っています。あなたが「値」変数を使用して、「データ」オブジェクトを生成したい場合は、次の操作を行うことができ

var data = {}; 
var arrayLength = subcategories.length; 
for (var i = 0; i < arrayLength; i++) { 
    //notice that now field name and field value go in separate variables 
    var fieldName = subcategories[i]; 

    //@C: selector is working fine, cleaning input 
    var fieldValue = $('#'+eachfield).val().trim(); 

    //push the appropriate values with the fixed stuff to a data object 
    data[fieldName] = fieldValue; 
} 


//and then you send your gathered data 
//using the data and sending it through a post with promise handling 
$.ajax({ 
type: 'POST', 
url: "controller.php", 
data: data, 
success: function(response) { 
    //alert("worked"); 
    //console.log(response); 
    alert(response); 
    }, 
    error: function() { 
     alert("There was an error submitting the information"); 
     } 
}); 
+0

うわー私は解決策がそれほど単純ではないと信じられない!私はちょっとばかな気がする。ありがとうございました! – Pary

0

::だから最初の部分は次のようになり

values = []; // here your values collected previously 
var data = {}; 
for (var key in values){ 
    data[key] = values[key]; 
} 
//now you can use your data in AJAX 
+0

あなたのソリューションも機能しました!ありがとうございました!! – Pary

関連する問題