2015-08-19 71 views
0

我在使用php-script發送ajax請求時遇到問題。將數據發送到服務器後,我收到消息'Uncaught TypeError:Illegal invocation'

我的jQuery腳本從窗體中選擇一些字段並將其作爲參數發送給jquery函數。但!在將數據發送到服務器之後,我收到消息'Uncaught TypeError:Illegal invocation'。

例AJAX

... 
this.createOrderByKey = function(optionsData, customerData) { 
    $.ajax({ 
     url: 'index.php?route=module/pd_quick_order/createOrderByKey', 
     type: 'post', 
     data: {options: optionsData, customer: customerData}, 
     async: false, 
     success: function(order) { 
      console.log(order); 
     } 
    }); 
}; 
... 

例optionsData可變

var productOptions = $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\']:checked, .product-info input[type=\'checkbox\']:checked, .product-info select, .product-info textarea'); 

的console.log(optionsData)

0: input.quantity 
1: input 
context: document 
length: 2 
prevObject: v.fn.v.init[1] 
selector: ".product-info input[type='text'], .product-info input[type='hidden'], .product-info input[type='radio']:checked, .product-info input[type='checkbox']:checked, .product-info select, .product-info textarea" 
__proto__: v[0] 

的console.log(customerData)

Object {name: "Max", phone: "+7 (988) 014-07-77"} 
+0

您的複製問題的JS小提琴會有很大幫助。 – Mahout

+0

嗯,我不知道如何添加我的AJAX腳本JSFiddle ... :(我試過了,但失敗了。 –

+0

從左邊的庫下拉菜單中選擇JQuery,你將不得不去掉一些不喜歡的代碼你的原始問題 - 例如'this.createOrderByKey' ...只需保留有問題的'$ .ajax'調用 – Mahout

回答

0

我發現如何解決我的問題!

var options = productOptions.serializeArray(); 
console.log(options); 

輸出

0: Object 
1: Object 
2: Object 
3: Object 
length: 4 
__proto__: Array[0] 
0

就像你說的那樣,你的小提琴在data: {productionOptions}

在這裏使用花括號會導致錯誤,因爲您沒有提供具有鍵值對的對象 - 使用{..}您正在創建某種語句塊,從而導致無法調用的錯誤。這就是爲什麼當你刪除{}時,它可以工作。

至於你在問題中的原始片段,我不明白爲什麼它不會基於上述推理起作用 - 當你使用它時肯定存在問題嗎?

+0

因此,好的。我改述我的問題。我如何轉換一個變量productOptions來包含[key:value]? –

+0

感謝您尋求解決方案的提示方向! –

相關問題