この説明がはっきりしないと申し訳ありませんが、私も理解するのが難しいです。 PHP&Ajaxを使用してJavascriptに配列を送信するにはどうすればよいですか?私はAjaxを使用して写真の配列を取得しています。これを追加しようとしています。ページの空の_<div>
_に。
JQueryは次のようになります。
_$.ajax({
url: "<?php echo site_url('demo/getPhotos/'); ?>",
type: 'POST',
data: form_data,
success: function(data) {
alert(data);
}
_
PHP関数getPhotosは次のようになります:
_<?php
$photos = array();
foreach ($data as $photo) {
array_Push($photos,$photo['source']);
}
// echo json_encode($photos); How should I be returning $photos?
_
単純に_echo $photos;
_の場合、データは成功コールバックに送信されますが、使用可能な形式ではないようです。
PHPでvar_dump($photos)
を実行すると、結果は次のようになります。
_array(4) {
[0]=>
string(14) "some_image.jpg"
[1]=>
string(14) "some_image.jpg"
[2]=>
string(14) "some_image.jpg"
[3]=>
string(14) "some_image.jpg"
}
_
_json_encode
_などのさまざまな組み合わせを試してみましたが、実際に推測していて、その背後にある理論がわかりません。このコンテキストでPHPからJavaScriptにデータを渡すための最良の方法は何ですか?
試してください:
$.ajax({
url: "<?php echo site_url('demo/getPhotos/'); ?>",
type: 'POST',
data: form_data,
dataType:"json",
success: function(data) {
alert(data[0]);
}
PHP側では、印刷する必要があります。
print json_encode($photos);
コードをより適切にカプセル化するために試すことができるもう1つのことは、JSONの詳細さの例として次のようになります。
print json_encode(array("photolist"=>$photos,"photo_owner"=>"Me!"));
次に、サーバー上でこれらにアクセスします。
data.photolist[0]; //First photo
data.photo_owner; //The owner of the photo set
配列を作りました$result
in PHPおよびリクエストの最後。
echo json_encode($result);
jS $.post
ハンドラー関数:
var obj = $.parseJSON(data);
var v = data.k;
ここで、k
は連想配列のキー値です。
json_encode
は間違いなく進むべき道です。 jQueryには、JSONの構文解析のサポートも組み込まれています。たとえば、.
$.ajax({
url: "<?php echo site_url('demo/getPhotos/'); ?>",
type: 'POST',
data: form_data,
dataType: 'json', // will automatically convert array to JavaScript
success: function(array) {
alert(array[0]); // alerts first string
}
});
json_encode rulezが必要な場合。
私も最近このクールなことを学びました!方法は次のとおりです。
function jsonResponse($array) {
header('Content-type: application/json; charset=utf-8;');
die(json_encode($array));
}
これはオプションです。必要な場合は必要ありませんが、私のMVCシステムでは、このように書く傾向があります...したがって、最初にスクリプトにajaxリクエスト(プロトタイプ)を作成します。前に述べたこの関数jsonResponseを呼び出します...
new Ajax.Request('URL',
{
method:'post',
onSuccess: function(transport){
res = transport.responseJSON;
$('actionInformation').update(res.username);
},
onFailure: function(){
alert('Something went wrong...')
}
});
これはjscriptコードです。res.msgに注意してください。ここで配列を操作できます。ただし、jsonResponse関数を使用して、PHPでJSON形式で応答を送信してください。使いやすいです。たとえば、php関数は次のようになります。
function ajax_get_user() {
$userName = 'Adrian';
$active = 1;
jsonResponse(array('username' => $username, 'active' = $active));
}
後で簡単に取得できます。res.username、res.active。
これでうまくいくと思います!
json自体を返し、次のようにjsonをループしてjsに配列を作成します。
var array=[];
for(var key in json)
{
if(json.hasOwnProperty(key))
array.Push(json[key]);
}
または、配列が必要な理由があれば、json自体を単純に操作できますか?
json [0]やjson [1]などのようなもの.