Php 动态URL太长(2568个字符),正在尝试将其缩短

Php 动态URL太长(2568个字符),正在尝试将其缩短,php,javascript,postgresql,netbeans,Php,Javascript,Postgresql,Netbeans,我正在drupal网站上使用javascript,但保存功能似乎只有在我点击“保存”按钮2次后才起作用。激发函数的代码是: var param ="&usuario="+usuario+"&nivel="+nivel+gano+porc_gano+gasto+porc_gasto+tengo+porc_tengo+debo+ porc_debo+plazo_debo; var s = document.createElement("script"); s.type = "

我正在drupal网站上使用javascript,但保存功能似乎只有在我点击“保存”按钮2次后才起作用。激发函数的代码是:

var param ="&usuario="+usuario+"&nivel="+nivel+gano+porc_gano+gasto+porc_gasto+tengo+porc_tengo+debo+     porc_debo+plazo_debo;
var s = document.createElement("script");
s.type = "text/javascript"; s.async = true;
s.src = server_direction +"setMisDatos?callback=respuestaGuardarMisDatos&param="+encodeURIComponent(param);
var h = document.getElementsByTagName("script")[0];
h.parentNode.insertBefore(s, h); //or h.appendChild(s);
chrome控制台告诉我错误在我复制的最后一行,但我不知道它是什么类型的错误

使用chrome控制台(特别是“网络”控制台),我看到它是用红色写的,状态/文本“失败”,键入“未定义”大小/内容“13b/0b”;当它工作时,它是:status/text“200/OK”,键入“text/json”,size/content“256b/38B”。我不是这方面的专家,还有其他有用的信息吗

这段代码启动了一个netbeans函数,该函数将数据存储到postgresql数据库中,因此当我单击“保存”按钮时,需要存储大约100个变量

变量的编写方式如下(在js文件中):

然后一起放入“param”变量中。现在清楚了吗

我在firefox中安装了httpfox,然后我检查了发生的情况,最后我认为我得到了错误:它显示NS_error_NET_RESET。这是实际的错误吗?我能做些什么来解决它

我一直在网上搜索,可能我的问题是URL太长了

http://www.mirodinero.com:8080/mirodinero-war/setMisDatos?callback=respuestaGuardarMisDatos&param=%26usuario%3DIsa%20Mirodinero%26nivel%3D109%26gano_sal_neto%3D211113.45%26gano_sal_prof%3D2480%26gano_monet%3D0%26gano_renta_fija%3D0%26gano_renta_vble%3D0%26gano_inmuebles%3D2226.75%26gano_otros%3D2223.73%26gano_otros_ing%3D2411.12%26porc_gano_monet%3D0%26porc_gano_rentaf%3D0%26porc_gano_rentav%3D0%26porc_gano_inm%3D2%26porc_gano_otros%3D2%26porc_gano_otros_ing%3D1%26gasto_casa1%3D1306.46%26gasto_casa2%3D2402.38%26gasto_casa3%3D3999.57%26gasto_prestamo1%3D93475.58%26gasto_prestamo2%3D7325.88%26gasto_prestamo3%3D34090.9%26gasto_tarjetas%3D29443.2%26gasto_ibi%3D5670%26gasto_imp_otros%3D6780%26gasto_seg_inm%3D1320%26gasto_seg_pens%3D3451.22%26gasto_seg_vida%3D2330%26gasto_seg_plan%3D34230%26gasto_seg_medico%3D21220%26gasto_seg_coche%3D220%26gasto_luz%3D620%26gasto_agua%3D4550%26gasto_gas%3D320%26gasto_telef_f%3D22320%26gasto_telef_m%3D2350%26gasto_internet%3D20%26gasto_tv%3D3450%26gasto_hogar%3D20%26gasto_comida%3D20%26gasto_cenas_copas%3D20%26gasto_viajes%3D20%26gasto_vacaciones%3D220%26gasto_mobiliario%3D220%26gasto_ropa%3D2320%26gasto_transp%3D230%26gasto_otros%3D3620%26gasto_colegios%3D240%26gasto_univ%3D340%26gasto_master%3D2230%26gasto_otros_gastos%3D7323433%26porc_gasto_tarjetas%3D0%26porc_gasto_ibi%3D0%26porc_gasto_trib%3D0%26porc_gasto_seg_inm%3D0%26porc_gasto_seg_pens%3D0%26porc_gasto_seg_vida%3D2%26porc_gasto_seg_plan%3D2%26porc_gasto_seg_med%3D0%26porc_gasto_seg_coche%3D0%26porc_gasto_sum_luz%3D2%26porc_gasto_sum_agua%3D2%26porc_gasto_sum_gas%3D0%26porc_gasto_sum_teleff%3D0%26porc_gasto_sum_telefm%3D0%26porc_gasto_sum_int%3D0%26porc_gasto_sum_tv%3D0%26porc_gasto_nivel_hogar%3D0%26porc_gasto_nivel_comida%3D0%26porc_gasto_nivel_cenas%3D0%26porc_gasto_nivel_viajes%3D0%26porc_gasto_nivel_vacac%3D0%26porc_gasto_nivel_mob%3D0%26porc_gasto_nivel_ropa%3D20%26porc_gasto_nivel_transp%3D30%26porc_gasto_nivel_otros%3D30%26porc_gasto_colegios%3D2%26porc_gasto_univ%3D0%26porc_gasto_master%3D0%26porc_gasto_otros_gastos%3D23%26tengo_casa1%3D1231.11%26tengo_casa2%3D10000%26tengo_casa3%3D22240%26tengo_otras%3D23560%26tengo_monetario%3D1212.34%26tengo_planpensiones%3D23230%26tengo_otros%3D23330%26porc_tengo_casa1%3D1%26porc_tengo_casa2%3D0%26porc_tengo_casa3%3D2%26porc_tengo_otras%3D0%26porc_tengo_monet%3D0%26porc_tengo_plan%3D0%26porc_tengo_otros%3D0%26debo_casa1%3D4340%26debo_casa2%3D23450%26debo_casa3%3D23430%26debo_prestamo1%3D23330%26debo_prestamo2%3D6871.11%26debo_prestamo3%3D11340%26debo_tarjetas%3D61340%26porc_debo_casa1%3D30%26porc_debo_casa2%3D10%26porc_debo_casa3%3D12%26porc_debo_prestamo1%3D1%26porc_debo_prestamo2%3D12%26porc_debo_prestamo3%3D1%26porc_debo_tarjetas%3D4%26plazo_debo_casa1%3D230%26plazo_debo_casa2%3D450%26plazo_debo_casa3%3D122%26plazo_debo_prestamo1%3D3%26plazo_debo_prestamo2%3D12%26plazo_debo_prestamo3%3D4
我数了一下,是2568个字符。所以我试着把它分成两部分,因为有“我挣的”、“我的债务”等等。问题是,如果我的函数只保存了一些列,那么它只会删除postgres中剩余的一列。如何解决这个问题

由于我的网页有不同的部分用来放置数据,我认为一个好主意是为部分变量创建更小的函数,例如放置30个变量并执行回调。我喜欢这样:

function guardaLoQueGano(){
var nivel = parseInt(document.getElementById('progreso_nivel_total').style.marginLeft);

/*idUsusario*/
var usuario =  miGetElementsByClassName('title', document.getElementById('block-user-1'))[0].innerHTML;

/*gano*/
var gano_sal_neto = getValor("gano_sal_neto");
var gano_sal_prof = getValor("gano_sal_prof");
var gano_monet = getValor("gano_monet");
var gano_renta_fija = (getValor("gano_renta_fija"));
var gano_renta_vble = (getValor("gano_renta_vble"));
var gano_inmuebles = (getValor("gano_inmuebles"));
var gano_otros = (getValor("gano_otros"));
var gano_otros_ing = (getValor("gano_otros_ing"));

/*gano porcentajes*/
var porc_gano_monet = getValor("porc_gano_monet");
var porc_gano_rentaf = getValor("porc_gano_rentaf");
var porc_gano_rentav = getValor("porc_gano_rentav");
var porc_gano_inm = getValor("porc_gano_inm");
var porc_gano_otros = getValor("porc_gano_otros");
var porc_gano_otros_ing = getValor("porc_gano_otros_ing");

var param = "&usuario=" + usuario + "&nivel=" + nivel + "&gano_sal_neto=" + gano_sal_neto + "&gano_sal_prof=" + gano_sal_prof + "&gano_monet=" + gano_monet + "&gano_renta_fija=" + gano_renta_fija + "&gano_renta_vble=" + gano_renta_vble + "&gano_inmuebles=" + gano_inmuebles + "&gano_otros=" + gano_otros + "&gano_otros_ing=" + gano_otros_ing +     "&porc_gano_monet=" + porc_gano_monet + "&porc_gano_rentaf=" + porc_gano_rentaf + "&porc_gano_rentav=" + porc_gano_rentav + "&porc_gano_inm=" + porc_gano_inm + "&porc_gano_otros=" + porc_gano_otros + "&porc_gano_otros_ing=" + porc_gano_otros_ing;

var s = document.createElement("script");

s.type = "text/javascript"; s.async = true;
s.src = direccion_servidor + "setMisDatos?callback=respuestaGuardarMisDatos&param=" + encodeURIComponent(param);
var h = document.getElementsByTagName("script")[0];
// adesso h.appendChild(s);
h.parentNode.insertBefore(s, h);
alert("Datos de lo que gano actualizados correctamente");
}
这种函数工作得很好,但有一个大问题:它更改此函数列的值,但删除其余列的值。如何创建不同的较小函数,以便只保存某些列而不更改其他列?我是否应该编写netbeans函数setMisDatos使其更清晰

新发现:

我一直在互联网上搜索,可能发现我的问题是,我可能会将GET方法更改为POST协议,因此它可能需要任意长度

在我的页面上,有一个php代码用于调用javascript函数,即:

  <div id="lo_que_gano" class="mis_datos" style="display:none">
<div class="generic todo_izq">

    <div class="ancho_lado_izq generic">
        <div class="texto_form generic">Salario neto</div>
        <div class="generic">
            <input class="numero" id="gano_sal_neto" type="text" value="0" onchange="calculoGano()" onkeypress="tecla('gano_sal_prof', event);"/></br>
        </div>
    </div>
  //all the values that has to be stored
 </div>
 <div class="generic botonGuardar">
    <input type="button" value="Guardar" onclick="return guardaTodo()"/>
 </div>
 </div>
ejecutar()是:

但我不知道这是什么意思。也许我应该用pgadmin“升级”数据库以进行更改:我添加了一个名为gsn的列-real和default 0,比如gano_sal_neto-,而没有删除gano_sal_neto(仍然存储用户的数据)


还是没人能帮我吗?我不知道在postgres中更改列名有什么问题,可能是我缺少了一个过程?

因为您正在构造一个
元素,动态生成
src
属性,所以无法使用POST。所有HTTP请求都使用GET。相反,您可以对查询字符串进行编码,使其更短。服务器端处理可以对其进行解码以发送正确的脚本文件

例如,当您可以调用
&u=
时,您不需要
&usario=
,因为您的服务器端进程不需要调用
usario
。这样做就节省了五个字节


您可以对值进行编码,使其更短,并在服务器端对其进行解码。我不知道数据到底是什么;这可能不实用。

答案是更改glassfish
HTTP服务的设置:我将超时更改为更大的间隔,现在它可以工作了

你不应该为同一个问题问多个问题。如果您没有收到答案,请尝试编辑您的问题以使其更清晰和/或提供更多详细信息。我删除了旧问题,并在此问题中添加了更多信息,可以吗?您的代码是否能正常工作?因为我无法理解你想做什么。。假设
h=document.getElementsByTagName(“脚本”)[0]
是head标记中的脚本,而
h.parentNode
是文档的
head
本身,您只需将其全部替换为
$(“head”).append(s)。哦,等等,你没有使用JQuery?您可以使用
document.head.appendChild然后。另外,您在DOM中插入的脚本是为了什么?您应该发布其代码,以便我们查看。此外,正如@jbabey所说,简单地编辑您的问题将使其上升到顶部,因此您不必删除并创建新的问题。编辑后:请重新阅读我的答案的第一段。感谢您的回答,我明天将尝试,然后告诉您它是否有效。
  <div id="lo_que_gano" class="mis_datos" style="display:none">
<div class="generic todo_izq">

    <div class="ancho_lado_izq generic">
        <div class="texto_form generic">Salario neto</div>
        <div class="generic">
            <input class="numero" id="gano_sal_neto" type="text" value="0" onchange="calculoGano()" onkeypress="tecla('gano_sal_prof', event);"/></br>
        </div>
    </div>
  //all the values that has to be stored
 </div>
 <div class="generic botonGuardar">
    <input type="button" value="Guardar" onclick="return guardaTodo()"/>
 </div>
 </div>
public float getTotalGano() {
    float res = user.getGanoMonet() + user.getGanoRentaFija() + user.getGanoRentaVble() + user.getGanoInmuebles() + user.getGanoOtros() + user.getGanoSalNeto() + user.getGanoSalProf() + user.getGanoOtrosIng();
    return res;
}
public void ejecutar() {
    boolean existe = true;
    DatosUsuario datosUser = datosUsuarioFacade.findById(atributosUsuario.getIdUsuario());
    if (datosUser != null) {
        List<Cartera> lc = carteraFacade.findByIdUsuario(atributosUsuario.getIdUsuario());
        Calculos c = new Calculos(datosUser, accionesDatosFacade, fondosDatosFacade, bonosDatosFacade, lc);
        ahorroLiquido = c.getTengoDisponible() / c.getTotalGasto();
        ingresoAnual = c.getTotalGano(); /*this is line 65 */
        diferenciaGanoGasto = c.getSupDefTotal();//indica lo que gano menos lo que gasto
        modificarAtributos(c, datosUser);
    }
2012-05-22 11:10:46 CESTLOG:  could not receive data from client: Unknown winsock error 10061
2012-05-22 11:10:46 CESTLOG:  unexpected EOF on client connection
2012-05-22 11:19:12 CESTLOG:  CreateProcess call failed: Unknown winsock error 10004 (error code 1115)
2012-05-22 11:19:12 CESTLOG:  could not fork autovacuum worker process: Unknown winsock error 10004