Jquery ajax函数没有被调用

时间:2013-05-02 21:29:02

标签: javascript jquery xml ajax web-services

我有一个网页,根据从Web服务发送的一些json数据填写表单数据。一旦表单准备好提交,就会调用一个函数,该函数将所有表单数据转换为xml格式的字符串,然后解析xml,使其成为有效的xml对象。这就是问题发生的地方,一旦将这些数据转换为xml,我想将这些数据发回给Web服务,以便可以更新数据库。但是,使用$ .ajax()函数发布此数据,既不会调用成功函数也不会调用错误函数。这导致我相信ajax函数永远不会被调用或运行。以下是代码段:

提交表单按钮:

<input type="submit" name="submitbutton" id="submitbutton" value="Submit" onclick="postData()"/>

postData函数:

function postData()
        {
            //gathering all inputs
            var cb = document.getElementById('paymentList');
            var selected_cb = cb.options[cb.selectedIndex].text;
            var pguid = getParameterByName('guid');
            var xmlString = '<string>' +
            addField('approver', $('#approver').val()) +
            addField('companyName', $('#companyName').val()) +
            addField('emailAddress', $('#emailaddress').val()) +
            addField('address1', $('#address1').val()) +
            addField('address2', $('#address2').val()) +
            addField('city', $('#city').val()) +
            addField('province', $('#province').val()) +
            addField('country', $('#country').val()) +
            addField('postalCode', $('#postalcode').val()) +
            addField('phoneNumber', $('#phone').val()) +
            addField('paymentMethod', selected_cb);

            //gathering all table data now
            xmlString+='<contractData>';
            $('#table tbody tr:has(img[src="images/checkmark.png"])').each(function() {
              xmlString += '<contract>' + addField('vendorPart', $('td:eq(1)', this).text()) +
                    addField('description', $('td:eq(2)', this).text()) +
                    addField('price', $('td:eq(3)', this).text()) +
                    addField('quantity', $('td:eq(4) input', this).val()) + '</contract>';
            });


            xmlString += '</contractData></string>';

        //hard coded var for purpose of this example, as web service name will be 
            var properid = 'somedata';

            xmlDoc = $.parseXML( xmlString );
            $xml = $( xmlDoc );

            //this function I believe is never run as neither alerts below are posted
            $.ajax({
                 type: "POST",
                 url: "http://www.webservice.com/service.asmx/sendMeMyData",
                 data: {properdata:properid, xml: $xml},
                 dataType: "text",
                 success: function() {

                    alert("posted");
                 },
                 error: function ()
                 {
                    alert("error");
                 }
            });

        }

addField函数(只是让你知道在postData()中调用它时的作用):

function addField(name, value) { // Add a single element and value
          value = value.replace(/&/g, '&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
          return '<' + name + '>' + value + '</' + name + '>';
    }

0 个答案:

没有答案