JQuery AJAX и PHP-массивов - PullRequest
       1

JQuery AJAX и PHP-массивов

1 голос
/ 09 июня 2010

Я пытаюсь отправить некоторые данные в сценарий PHP, однако сценарии PHP ожидают, что данные поступят в определенном формате, как в этом примере, который представляет собой дамп сообщения,

Array ( [save] => Add to shortlist [cv_file] => Array ( [849709537] => Y [849709616] => Y [849709633] => Y ) )

В настоящее время происходит процесс, когда пользователь выбирает нужный продукт с помощью флажков, а затем нажимает кнопку отправки, которая запускает сценарии PHP,

HTML выглядит следующим образом:

div class="row">

                        <ul>
                            <li class="drag_check ui-draggable">
                                <input type="checkbox" id="inp_cv_849709537" name="cv_file[849709537]" class="cv_choice" value="Y">
                            </li>

                            <li class="id"><a href="/search/cv/849709537">849709537</a></li>
                            <div class="disp">
                            <li class="location">Huddersfield</li>
                            <li class="status">
                            Not currently working                               </li>
                            <li class="education">other</li>
                            <li class="role">
                            Temporary                               </li>
                            <li class="salary">£100,000 or more</li>
                            <div class="s">&nbsp;</div>
                            </div>
                        </ul>
                            <dl>
                                <dt>Current Role</dt>
                                <dd>Developer </dd>
                                <dt>Sectors</dt><dt>
                                </dt><dd>
                                    Energy &amp; Utilities, Healthcare, Hospitality &amp; Travel, Installation &amp; Maintenance, Installation &amp; Maintenance                                    </dd>

                                <dt>About Me</dt><dt>
                                </dt><dd></dd>
                                </dl>
                                <div class="s"></div>
                    </div>

Мне нужновместо этого сейчас используйте AJAX, но мне нужно отправить данные в PHP в ожидаемом здесь формате:

$('#addshortlist').click(function() {
var datastring = ui.draggable.children().attr('name')+"="+ui.draggable.children().val()+"&save=Add to shortlist";
alert(datastring);
$.ajax({
    type: 'POST',
    url: '/search',
    data:ui.draggable.children().attr('name')+"="+ui.draggable.children().val()+"&save=Add to shortlist",
    success:function(){
        alert("Success"+datastring);
    },
    error:function() {
        alert("Fail"+datastring);
    }
}); 
return false;

});

Я был бы очень признателен за любыепомощь

1 Ответ

0 голосов
/ 09 июня 2010

Чтобы получить полученный результат PHP, вам нужно собрать литерал объекта, как показано ниже:

var your_data = {
    save: 'Add to shortlist',
    cv_array: {
        '849709537': 'Y',
        '849709616': 'Y',
        '849709633': 'Y'
    }
};

Затем вы можете сделать это

$.ajax({
    type: 'POST',
    url: 'http://example.com/path/to/script.php',
    data: your_data,
    success: function(data){
        $('#debug').html(data);
    },
    dataType: 'html'
});

(Кстати, базовый HTML, которыйбудет выводить результат):

<form action="http://example.com/path/to/script.php" method="POST" id="myForm">
    <input name="save" value="Add to shortlist">
    <input type="checkbox" name="cv_array[849709537]" value="Y" checked>
    <input type="checkbox" name="cv_array[849709616]" value="Y" checked>
    <input type="checkbox" name="cv_array[849709633]" value="Y" checked>
    <input type="submit" value="Continue &rarr;">
</form>

Теперь, если вы не изменили свою форму, все, что вам действительно нужно сделать, это сделать вызов ajax, и передаваемые вами данные будут собраны с помощью jQueryserialize() метод, который сворачивает все содержимое формы во что-то, что вы можете передать скрипту на стороне сервера:

$.ajax({
    type: 'POST',
    url: 'http://example.com/path/to/script.php',
    data: $('#myForm').serialize(),
    success: function(data){
        $('#debug').html(data);
    },
    dataType: 'html'
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...