2012-11-20 53 views
2

我試圖讓我的AJAX/JSON的腳本工作,我已經看過了計算器,但無法找到任何看起來會有所幫助。基本上所有我想要做的是當用戶點擊一個提交按鈕,一個隱藏的輸入值被髮送到另一個PHP腳本通過AJAX,它會被改變等...然後通過AJAX發回,並顯示在一個內部div通過一個響應,我不知道我做錯了什麼。通過AJAX發送隱藏輸入到php腳本不工作

目前我得到什麼,沒有輸出或任何東西。

我會嘗試儘可能在代碼中,我在下面給出的深入,感謝所有幫助。主頁上

AJAX腳本

<script> 
$(document).ready(function() { 
    $(".add_detail_land_down").click(function() { 
    var hidden_count = $('input[name=addon_detail_hidden_count]').val(); 
    $.ajax({ 
     type: "GET", 
     url: "ajax_script.php", 
     data: { 
     hidden_count: hidden_count 
     }, 
     dataType: "json", 
     statusCode: { 
     success: function (data) { 
      $("#total_hidden").html(data.total_hidden); 
     } 
     } 
    }); 
    }) 
}); 
$(".add_detail_land_down").click(); 
</script> 

主要頁面的表單頭(認爲我也可以添加它,只是櫃面)

<form action="" method="post"> 

隱藏輸入主頁

<input type="hidden" name="addon_detail_hidden_count" id="addon_detail_hidden_count" class="addon_detail_hidden_count" value="1" /> 

的啓動

主頁上的AJAX程序提交按鈕
<input name="add_detail_land_down" type="submit" class="add_detail_land_down" value="add_detail_down"/> 

在ajax_script.php

<?php 

$hidden_count = $_GET["hidden_count"]; 

$hidden_count = $hidden_count + 1; 
include 'connect_to_mysql.php'; 

echo json_encode(array("total_hidden" => $hidden_count)); 

?> 

感謝您的任何和所有幫助

+0

所使用的任何開發工具,像螢火蟲,看錯誤的請求/響應週期? –

+0

是的,我已經嘗試過鉻合金開發工具,似乎沒有得到任何錯誤 –

回答

1

其中提到的所有其他問題:statusCode/success語法問題,並點擊trigegr outlsde document.ready您還需要防止瀏覽器默認提交表單。

當您提交...正常的瀏覽器行爲時,目前您的頁面可能會刷新。

在你需要防止這種情況單擊處理程序或者返回false或使用preventDefault()

$(".add_detail_land_down").click(function (event) { 

    /* use either of these */ 

    /* before your ajax code */ 
    event.preventDefault(); 

    /* or after your ajax code*/ 

    return false; 

}) 
+0

嗨,感謝您的回覆,我認爲它實際上解決了問題,這裏是最終的代碼,我知道的有點基本,但它只是讓它工作,然後我將它移動到我的主站點,在那裏什麼都可以批准?非常感謝您的幫助 - http://pastebin.com/VSKyiwRy –

+0

唯一的建議是ID選擇器在瀏覽器中更快找到,並且通常更容易編寫而不是'name = ....'。由於你的元素有ID,這不是一個很大的改變。另一個shorcut ...你可以將點擊觸發器鏈接到點擊處理函數'$(selector).click(fuction(){/ * code * /})。click();' – charlietfl

+0

確定輝煌,非常感謝 –

3

你爲什麼要嵌套代碼的success callback的StatusCode

應該是

dataType: "json", 
success: function (data) { 
    $("#total_hidden").html(data.total_hidden); 
} 

OR

使用成功的狀態代碼代替

dataType: "json", 
statusCode: { 
    200 : function (data) { 
      $("#total_hidden").html(data.total_hidden); 
    } 
} 
+0

+1這可能是失敗的主要原因 - 好點! – ManseUK

+0

感謝您的回答,我做了您所建議的更改,以及其他一些答案,現在正在運行 –

+0

@AlWise ..很高興能有所幫助:) –

0

的StatusCode是數字和你的情況應該是200它改變從success200像這樣:

statusCode: { 
    200: function (data) { 
     $("#total_hidden").html(data.total_hidden); 
    } 
} 
0

您的成功回調sho ULD這樣指定(如果你只關心200):

success: function (data) { 
    $("#total_hidden").html(data.total_hidden); 
} 

而且,當你試圖在元素上執行click()加載文檔之前可能實際發生的,因此執行前的onclick處理程序已準備就緒。如果您想在準備好的文檔上自動觸發,這應該在onclick之後準備就緒。

+0

關於數據的對象表示法'壞' '???行情不是必需的 – charlietfl

+0

我認爲第一個案件不應該是一個問題..該鍵可以有或沒有行情..這不是一個問題..既然它是正常的JavaScript對象,而不是json字符串 –

+0

@charlietfl至少由於你有一個指定了特定名字的變量,所以你的意圖很混亂。我個人會改變變量的名稱。儘管我已經從我的答案中刪除了,因爲你說得對,這其實不是問題。 –