ajax заявка към php

teroristd

Registered
Здравейте, преди да постна кода ще обясня на кратко цялата работа. В база дани записвам снимки като всяка е с уникално ид. След като всичко се качи имам една onComplete функция в която изкарвам вече качените снимки като към всяка снимка изкарвам и remove бутон. Този бутон има клик функция с която премахвам снимката и самия бутон, като тук вече идва и основния въпрос. В същата функция искам посредством аякс да се свържа с пхп скрипт който да изтрива информацията от базата но за всяка снимка отделно, демек трябва да вземе ид-то на снимката. Аз успях да го направя да трие всичко но това не ми върши работа. Значи ето скриптовете като искам да отбележа че в пхп-то ако е само делейт заявката без ид-то ( DELETE FROM match_item_image ) трие всичко. Въпроса е как да взема ид-то.

Код:
onComplete : function(event, ID, fileObj, response, data) {

          $('#inner2').append('<img id="img" src="'+fileObj.filePath+'" width="100" height="100" /><div id="remove-btn" ><span>Remove Image</span></div>');

          $("#remove-btn").live('click',function() {

          $.get('del.php', function() {
 
          alert('Load was performed.');
  
          });

                $(this).prev().remove();
                $(this).remove();

			});

         }

        });

        });


Код:
 <?php

$id = $_GET['id'];
 if($id){
   
  $res = mysql_query("SELECT * FROM match_item_image WHERE id = '".$id."'")or die();
  $row = mysql_fetch_array($res); 
  	if($row['image'] != ""){
	$deleted = unlink($row['image']);
	}
	if($deleted){
	mysql_query("DELETE FROM match_item_image WHERE id = '".$id."'") or die();
	}
	
	}
   
?>
 
След като се е записала снимката и се е генерирало id за този файл, трябва да си изясниш къде и как ще получиш това id, аз бих предположил, че то е част от fileObj, примерно fileObj.id и тогава кода става:

[js]
$("#remove-btn").live('click',function() {

$.get('del.php', {id: fileObj.id}, function() {

alert('Load was performed.');

});
[/js]

По този начин, в del.php ще получиш id на файла чрез $_GET['id']
 
зареждай всичко в dom-a, демек id-тата на снимките
дават ти прост пример:
<a href="javascript:deleteFunction(id);">dasassada</a>
Пиши ОOP под JS и няма да имаш проблеми
 
Добре но би ли ми показал как ще стане целия пример. Нов съм в джаваскрипта. Пробвах така но не работи.


Код:
$('#inner2').append('<img id="img" src="'+fileObj.filePath+'" width="100" height="100" /><div id="remove-btn"><a href="javascript:deleteFunction(id);">Remove Image</a></div>');
Код:
function deleteFunction(id){
		 
		 $.get('del.php', {id: fileObj.id}, function() {

          alert('Load was performed.');
  
          });

                $(this).prev().remove();
                $(this).remove();
		 }
 
Здравейте отново, намерих една функцийка която почти прави това което искам, но ключовата дума е почти :) . Значи с нея ако посоча точното ид го трие del.php?id=32', но ако дам del.php?id=$row[id]' не иска. Ето и функцията. А във основния файл я извиквам така TINY.ajax.call('del.php?id=$row[id]', 'content', 'display(\'red\')');

Код:
TINY={};

function T$(id){return document.getElementById(id)}
 
TINY.ajax=function(){
    return{
        call:function(u,d,f,p){
            var x=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP');
            x.onreadystatechange=function(){
                if(x.readyState==4&&x.status==200){
                    if(d){
                        var t=T$(d);
                        t.innerHTML=x.responseText
                    }
                    if(f){
                        var c=new Function(f); c()
                    }
                }
            };
            if(p){
                x.open('POST',u,true);
                x.setRequestHeader('Content-type','application/x-www-form-urlencoded');
                x.send(p)
            }else{
                x.open('GET',u,true);
                x.send(null)
            }
        }
    };
}();

function display(name){
	var output=T$('output');
	output.style.display='block';
	output.className=name;
}

function hide(){
	var output=T$('output');
	output.style.display='none';
}
 
ами не знам точно как да ти отговоря на въпроса ако имаш придвид пхп-то постнал съм го в първия пост но число трябва да връща в базата съм го направил класически аутоинкримент
 
teroristd каза:
ами не знам точно как да ти отговоря на въпроса ако имаш придвид пхп-то постнал съм го в първия пост но число трябва да връща в базата съм го направил класически аутоинкримент

Не въпроса ми е, как го изкарваш <a href="javascript:delete(id);">...

Къде пишеш кода за показване на линка за триене на снимка.
 
в онкомплит функцията имам ремув бутон клик функция и вътре в нея се опитвам да се свържа с делейт пхп ето кода. Пхп файла можеш да го видиш в първия пост.

Код:
onComplete : function(event, ID, fileObj, response, data) {

          // Тука извеждам картинката и бутона
          $('#inner2').append('<img id="img" src="'+fileObj.filePath+'" width="100" height="100" /><div id="remove-btn" ><span>Remove Image</span></div>');


           //Това е ремув функцията
          $("#remove-btn").live('click',function() {

          // Ако така викам функцията не работи
          TINY.ajax.call('del.php?id=$row[id]');

         // А ако я викам така трие даденото ид стига да го има 
          TINY.ajax.call('del.php?id=34');

                $(this).prev().remove();
                $(this).remove();

         });

         }

        });

        });
 
Правиш си един цикъл с резултатите.
Код:
while($row = $db->sql_fetchrow($result))
{
    echo "<a data-delete-id=\"{$row['id']}\">Delete #{$row['id']}</a>";
}

и след това ползваш тоя код:

http://jsfiddle.net/bTwK2/
 
Горе долу разбрах какво имаш предвид но има проблем. По този начин първо бутоните вървят с един назад и второ ако има вече качени картинки например сто ще излезнат сто бутона. А на мен ми трябва в момента на качването на тази картинка бутон. Надявам се разбираш какво имам предвид.
 

Back
Горе