2013-06-28 4 views
2

Я реализую систему маркировки фотографий.Wordpress - Передача переменной javascript в php

в моем файле PHP У меня есть:

if($_POST['type'] == "insert") { 
    $pid = $post->ID; 

    $tag_name = $_POST['tag_name']; 
    $tag_link = $_POST['tag_link']; 
    $pic_x = $_POST['pic_x']; 
    $pic_y = $_POST['pic_y']; 

    $arr = array("tag_name" => $tag_name, "tag_link" => $tag_link, "pic_x" => $pic_x, "pic_y" => $pic_y); 

    add_photo_tag($pid, $arr); 

    wp_redirect("http://www.test.com"); 
} 

поймать данные. в моем файле JS я есть:

$('#tagit #btnsave').live('click',function(){ 
    name = $('#tagname').val(); 
    link = $('#taglink').val(); 
    counter++; 
    $('#taglist ol').append('<li rel="'+counter+'">'+counter+'. <a href="'+link+'#test_id" target="new">'+name+'</a> (<a class="remove">Entfernen</a>)</li>'); 
    $('#imgtag').append('<div class="tagview" id="view_'+counter+'">'+counter+'</div>'); 
    $('#view_' + counter).css({top:mouseY,left:mouseX}); 
    $('#tagit').fadeOut(); 

    $.ajax({ 
     type: "POST", 
     url: "content.php", 
     data: "tag_name=" + name + "&tag_link=" + link + "&pic_x=" + mouseX + "&pic_y=" + mouseY + "&type=insert", 
     cache: true, 
     success: function(data) { 
      alert("success!"); 
     } 
    }); 

}); 

Как-то переменные не получают передаются в PHP, в результате чего мне не в состоянии сохранить данные надлежащим образом в базу данных. Проблема должна быть где-то в части $ .ajax или php. Кто-нибудь может мне помочь?

+0

пожалуйста, попробуйте с WordPress методом АЯКС прохождения, что лучше один http://codex.wordpress.org/AJAX_in_Plugins – softsdev

ответ

0

Попробуйте с помощью следующего кода:

$.ajax({ 
     type: "POST", 
     url: "content.php", 
     data: {"tag_name": name,"tag_link":link,"pic_x": mouseX,"pic_y":mouseY, "type":"insert"}, 
     //change here like I have done 
     cache: true, 
     success: function(data) { 
      alert("success!"); 
     } 
    }); 

И Заменить if($_POST['type'] == "insert_tag") линию следующим образом:

if($_POST['type'] == "insert") 

В качестве значения вы передаете из $_POST['type'] это вставить не insert_tag.

EDITED:

еще одна вещь, как я обнаружил, что вы не использовали вар перед инициализацией переменной. используйте var name = ...

+0

ТНХ отредактированные код, добавив «» после мышиный. По-прежнему не срабатывает предупреждение о том, что оно выполнено успешно, и ничего не передается в php: S – Cloudzane

+0

@Cloudzane использует firebug для отладки вашего кода, а затем вы обязательно найдете правильную ошибку в своем коде. –

1

Ну, вы проверяете переменную пост $_POST['type'] == "insert_tag", пока она актуальна: &type=insert. Другие выглядят прекрасно. Btw никогда не пользователь .live(), это устаревшее, сделайте это с .on()

Кроме того, если все элементы на форме вы можете использовать $('your_form_selector').serialize() - that'l быть ваши почтовые данные

+0

sry просто отредактировал его. что, к сожалению, не была ошибкой, которую я просто финансировал с помощью кода слишком много и забыл отредактировать его, прежде чем я разместил его здесь – Cloudzane

0

Ваш код PHP ищет для «типа ', чтобы быть равным' insert_tag '.

Ваш JavaScript POSTing с типом = insert - поэтому ваш php-код игнорирует его.

+0

thx, который был просто ошибкой копирования/вставки. У меня на самом деле было это право. Все еще не работает печально. – Cloudzane

0

Почему вы перенаправляете свой код PHP? Удалить эту линию:

wp_redirect("http://www.test.com"); 

Вы можете заменить ее какой-то простой системой обратной связи. В конце концов вы хотите, чтобы серверная сторона передала статус и, возможно, некоторые сообщения проверки.

$return = array('status' => 0, 'msg' => 'all is well'); 

if(!add_photo_tag($pid, $arr)) { 
    $return['msg'] = __('Could not add photo tag.'); 
    $return['status'] = -1; 
} 

echo json_encode($return); 
Смежные вопросы